⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lyrics.as

📁 程序中所需要的播放列表文件以及音乐文件 我就不提供了,因为这些太好做了 这是一个工程,需要播放器版本为8以上的
💻 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 + -