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

📄 lrc.as

📁 flash强大事件机制扩展类
💻 AS
字号:
//----------------------------------------
/*
@Description:  继承自EventDispatcher类.解析标准的LRC文档.
//方法:
public load(url:String):void加载 LRC 文档..
//属性:
public loaded:Boolean [只读]	是否成功加载.
public title:String [只读]	标题.
public artist:String [只读]	歌手.
public album:String [只读]	专辑.
public author:String [只读]	作者.
public lyricsList:Array [只读]	歌词列表,二维数组,
				LRC.lyricsList[i][0]  --- 时间
				LRC.lyricsList[i][1]  --- 歌词
public offset:Number 		偏移量.可设置.
//
//事件:
complete	加载完成时调用.
ioError		加载错误时调用.参数 text 返回错误信息.
httpStatus 	当 Flash Player 接收来自服务器的 HTTP 状态代码时调用.参数 status 由服务器返回的 HTTP 状态代码.
//
@usage:   
@example: 
//
//LRCExample.as
package 
{
	//----------------------------------------
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.events.HTTPStatusEvent;
	//----------------------------------------
	import AS3.data.LRC;
	//----------------------------------------
	public class LRCExample extends Sprite
	{
		//----------------------------------------
		public function LRCExample()
		{
			var lrc:LRC = new LRC();
			lrc.load("http://localhost/lyrics/秋天不回来-王强.lrc");
			lrc.addEventListener(Event.COMPLETE, this.completeHandler);
			lrc.addEventListener(IOErrorEvent.IO_ERROR, this.ioErrorHandler);
			lrc.addEventListener(HTTPStatusEvent.HTTP_STATUS, this.httpStatusHandler);
		}
		//----------------------------------------
		private function completeHandler(evt:Event):void
		{
			trace(evt);
		}
		private function ioErrorHandler(evt:IOErrorEvent):void
		{
			trace(evt);
		}
		private function httpStatusHandler(evt:HTTPStatusEvent):void
		{
			trace(evt);
		}
		//----------------------------------------
	}
}
//
//LRCExample.fla
文档类:LRCExample
//
@author:  ChooseFlash
@date:  2007-07-07
*/
//----------------------------------------
package AS3.data
{
	//----------------------------------------
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.events.HTTPStatusEvent;
	import flash.events.EventDispatcher;
	//----------------------------------------
	public class LRC extends EventDispatcher
	{
		//----------------------------------------
		private var _lyrics:String;
		private var _title:String;
		private var _artist:String;
		private var _album:String;
		private var _author:String;
		private var _offset:Number;
		private var _lyricsList:Array = [];
		private var _loaded:Boolean;
		//----------------------------------------
		public function LRC()
		{
		}
		//----------------------------------------
		public function load(url:String):void
		{
			var loader:URLLoader = new URLLoader(new URLRequest(url));
			loader.addEventListener(Event.COMPLETE, this.completeHandler);
			loader.addEventListener(IOErrorEvent.IO_ERROR, this.ioErrorHandler);
			loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, this.httpStatusHandler);
		}
		//----------------------------------------
		private function readLyrics():void
		{
			var tempArr:Array = this._lyrics.split("\r\n");
			var len:Number = tempArr.length;
			for (var i = 0; i < len; i++) {
				if (tempArr[i].indexOf("[ti:") == 0) {
					this._title = tempArr[i].slice(4, tempArr[i].indexOf("]"));
				} else if (tempArr[i].indexOf("[ar:") == 0) {
					this._artist = tempArr[i].slice(4, tempArr[i].indexOf("]"));
				} else if (tempArr[i].indexOf("[al:") == 0) {
					this._album = tempArr[i].slice(4, tempArr[i].indexOf("]"));
				} else if (tempArr[i].indexOf("[by:") == 0) {
					this._author = tempArr[i].slice(4, tempArr[i].indexOf("]"));
				} else if (tempArr[i].indexOf("[offset:") == 0) {
					this._offset = tempArr[i].slice(8, tempArr[i].indexOf("]"));
				} else if (tempArr[i].indexOf("[") == 0 && tempArr[i].indexOf("]") == 9) {
					tempArr[i] = tempArr[i].split("]");
					for (var j = 0; j < tempArr[i].length - 1; j++) {
						var time:Number = Number(tempArr[i][j].slice(1, 3)) * 60000 + Number(tempArr[i][j].slice(4, 6)) * 1000 + Number(tempArr[i][j].slice(7)) * 10;
						this._lyricsList.push([time, tempArr[i][tempArr[i].length - 1]]);
					}
				}
			}
			this._lyricsList.sortOn("0", Array.NUMERIC);
		}
		private function completeHandler(evt:Event):void
		{
			this._loaded = true;
			this._lyrics = evt.target.data;
			this.readLyrics();
			this.dispatchEvent(new Event(Event.COMPLETE));
		}
		private function ioErrorHandler(evt:IOErrorEvent):void
		{
			this._loaded = false;
			this.dispatchEvent(new IOErrorEvent(IOErrorEvent.IO_ERROR, evt.bubbles, evt.cancelable, evt.text));
		}
		private function httpStatusHandler(evt:HTTPStatusEvent):void
		{
			this.dispatchEvent(new HTTPStatusEvent(HTTPStatusEvent.HTTP_STATUS, evt.bubbles, evt.cancelable, evt.status));
		}
		//----------------------------------------
		public function get loaded():Boolean
		{
			return this._loaded;
		}
		public function get title():String
		{
			return this._title;
		}
		public function get artist():String
		{
			return this._artist;
		}
		public function get album():String
		{
			return this._album;
		}
		public function get author():String
		{
			return this._author;
		}
		public function get lyricsList():Array
		{
			return this._lyricsList;
		}
		public function get offset():Number
		{
			return this._offset;
		}
		public function set offset(o:Number):void
		{
			this._offset = o;
		}
		//----------------------------------------
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -