📄 lrc.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 + -