📄 lyrics.as
字号:
class is.userUI.player.Lyrics {
private var target_mc;
private var _lyrics_width, _lyrics_height, __x, __y;
private var listNum;
private var startPoint, endPoint;
private var _lrc_xml:XML;
private var decompressLyrics:Array;
private var lyricsText:Array;
private var lyricsTime:Array;
public function Lyrics(target, _lyrics_width, _lyrics_height, __x, __y, fileName:String) {
var i, j;
var lrcString:String;
var tempText, tempTime, temp;
/*----------创建对当前类的本地引用-----------*/
var thisObj:Lyrics = this;
/*-----------------------------------------*/
var lrc:XML = new XML();
var originLyrics = new Array();
this.decompressLyrics = new Array();
this.lyricsText = new Array();
this.lyricsTime = new Array();
this.target_mc = target;
this._lyrics_width = _lyrics_width;
this._lyrics_height = _lyrics_height;
this.__x = __x;
this.__y = __y;
lrc.onLoad = function(success:Boolean) {
if (success) {
thisObj._lrc_xml = this;
//thisObj.analyzeLyrics();
//thisObj.createLyricsBox();
} else {
trace("open file failure!!");
}
};
lrc.load(fileName);
}
public function analyzeLyrics():Void {
var i, j;
var lrcString:String;
var tempText, tempTime;
var originLyrics = new Array();
/*----------创建对当前类的本地引用-----------*/
var thisObj:Lyrics = this;
/*-----------------------------------------*/
lrcString = thisObj._lrc_xml.toString();
originLyrics = lrcString.split(chr(10));
for (i in originLyrics) {
if (originLyrics[i] == "") {
originLyrics.splice(i, 1);
}
}
for (i in originLyrics) {
var tempLyrics = originLyrics[i].split("]");
var arrayLength = tempLyrics.length;
for (j=0; j<arrayLength-1; j++) {
this.decompressLyrics.unshift(tempLyrics[j]+"]"+tempLyrics[arrayLength-1]);
}
}
this.decompressLyrics.sort();
for (i=this.decompressLyrics.length-1; i>=0; i--) {
tempText = this.decompressLyrics[i].split("]")[1];
if (tempText != "\r") {
this.lyricsText.push(tempText);
}
tempTime = this.decompressLyrics[i].split("]")[0].slice(2);
tempTime = this.convertToTime(tempTime);
if (!isNaN(tempTime)) {
this.lyricsTime.push(tempTime);
}
}
this, lyricsText.reverse();
this.lyricsTime.reverse();
this.listNum = this.lyricsText.length;
}
public function convertToTime(str) {
var timeArray = new Array();
var i;
timeArray = str.split(":");
return parseFloat(timeArray[0])*60.0+parseFloat(timeArray[1]);
}
public function createLyricsBox() {
var i;
this.target_mc.attachMovie("_lyrics_text", "_lyrics_text", 0);
this.target_mc._lyrics_text._visible = 0;
for (i=0; i<this.listNum; i++) {
this.target_mc._lyrics_text.duplicateMovieClip("_lyrics_text"+i, i+1);
this.target_mc["_lyrics_text"+i]._lyrics.text = this.lyricsText[i];
if (i == 0) {
this.target_mc._lyrics_text0._y = this.__y;
} else {
this.target_mc["_lyrics_text"+i]._y = this.target_mc["_lyrics_text"+(i-1)]._y+16;
}
this.target_mc["_lyrics_text"+i]._width = this._lyrics_width;
this.target_mc["_lyrics_text"+i]._x = this.__x;
}
for (i=0; i<this.lyricsTime.length; i++) {
if (!isNaN(this.lyricsTime[i])) {
this.startPoint = i;
break;
}
}
for (i=this.lyricsTime.length; i>0; i--) {
if (!isNaN(this.lyricsTime[i])) {
this.endPoint = i;
break;
}
}
}
public function moveLyricsBox(currentPos, startPoint, endPoint) {
var i;
var _current_y;
var currentPoint;
var _deltaTime, _s, _v;
for (i=startPoint; i<endPoint; i++) {
if (i == endPoint) {
currentPoint = i;
break;
}
if (currentPos<=this.lyricsTime[i]*1000) {
currentPoint = i-1;
break;
}
}
_current_y = Math.floor(this._lyrics_height/2)-(currentPoint+1)*16;
if (currentPoint == 0) {
_deltaTime = lyricsTime[0];
this.target_mc._lyrics_text0.gotoAndStop(2);
} else if (currentPoint == -1) {
_deltaTime = lyricsTime[0];
} else {
_deltaTime = lyricsTime[currentPoint]-lyricsTime[currentPoint-1];
this.target_mc["_lyrics_text"+currentPoint].gotoAndStop(2);
this.target_mc["_lyrics_text"+(currentPoint-1)].gotoAndStop(1);
}
_s = this.target_mc._y-_current_y;
_v = _s/_deltaTime;
this.target_mc._y -= _v;
}
public function get _startPoint():Number {
return this.startPoint;
}
public function get _endPoint():Number {
return this.endPoint;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -