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

📄 lrc.as

📁 flash强大事件机制扩展类
💻 AS
字号:
//----------------------------------------
/*
@Description:  	继承自CFEventDispatcher类.解析标准的LRC文档.
//方法:
public load(url:String):Boolean		加载 LRC 文档.地址正确返回true,否则false.
public toString():String			返回类名称 "[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     加载错误时调用.
httpStatus 	当 Flash Player 接收来自服务器的 HTTP 状态代码时调用.参数 status 由服务器返回的 HTTP 状态代码.
//
@usage:   		
@example: 
//
//LRCExample.as
//----------------------------------------
import AS2.data.LRC;
import AS2.events.Event;
import AS2.events.IOErrorEvent;
import AS2.events.HTTPStatusEvent;
//----------------------------------------
class LRCExample
{
	//----------------------------------------
	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, 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
new LRCExample();
//
@author:  ChooseFlash
@date:	  2007-07-07
*/
//----------------------------------------
import AS2.events.Event;
import AS2.events.IOErrorEvent;
import AS2.events.HTTPStatusEvent;
import AS2.events.CFEventDispatcher;
//----------------------------------------
class AS2.data.LRC extends CFEventDispatcher
{
	//----------------------------------------
	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()
	{
		System.useCodepage = true;
	}
	//----------------------------------------
	public function load(url:String):Boolean
	{
		var thisObj:Object = this;
		var lrcXML:XML = new XML();
		lrcXML.onLoad = function(success:Boolean)
		{
			if (success) {
				thisObj._lyrics = this.toString();
				thisObj.readLyrics();
				thisObj.dispatchEvent(new Event(Event.COMPLETE));
			} else {
				thisObj.dispatchEvent(new IOErrorEvent(IOErrorEvent.IO_ERROR, "LRC 文档地址错误!"));
			}
			thisObj._loaded = success;
		};
		lrcXML.onHTTPStatus = function(httpStatus:Number)
		{
			thisObj.dispatchEvent(new HTTPStatusEvent(HTTPStatusEvent.HTTP_STATUS, httpStatus));
		}
		return lrcXML.load(url);
	}
	public function toString():String
	{
		return "[LRC]";
	}
	//----------------------------------------
	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);
	}
	//----------------------------------------
	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 + -