📄 player.as
字号:
/*===================================================================================================================*/
//类名: Player(,,,,,)
//-------------------------------------------------------------------------------------------------------------------
//功能: 创建可视化播放器,支持歌词同步显示
//-------------------------------------------------------------------------------------------------------------------
//版本: 1.0.0.1
//-------------------------------------------------------------------------------------------------------------------
//参数: target:Object, __x:Number, __y:Number, _lyrics_width:Number, _lyrics_height:Number, __depth:Number
//-------------------------------------------------------------------------------------------------------------------
//参数说明: => target ----- 创建播放器的剪辑 示例: _root
// => __x ----- 播放器左上角X坐标 示例: 5
// => __y ----- 播放器左上角Y坐标 示例: 5
// => _lyrics_width ----- 歌词秀的宽度 示例: 320
// => _lyrics_height ----- 歌词秀的高度 示例: 300
// => __depth ----- 播放器的深度 示例: _root.getNextHighestDepth();
//-------------------------------------------------------------------------------------------------------------------
//类设计: JohnNy EVEN
//-------------------------------------------------------------------------------------------------------------------
//备注: x, y 坐标都相对于舞台左上角
/*===================================================================================================================*/
class is.userUI.player.Player {
private var target_mc:Object;
private var _lyrics_width:Number, _lyrics_height:Number, __x:Number, __y:Number, __depth:Number, playlist:String;
private var startPoint:Number, endPoint:Number;
private var listPos:Number;
private var songPos:Number;
private var song:Sound;
private var lyrics_url:String;
private var _lrc_xml:XML, _list_xml:XML;
private var currentPlay:String;
private var listTitle:Array;
private var listURL:Array;
private var decompressLyrics:Array;
private var lyricsText:Array;
private var lyricsTime:Array;
public function Player(target:Object, __x:Number, __y:Number, _lyrics_width:Number, _lyrics_height:Number, __depth:Number, _playlist:String) {
//------------------------------------------------------------------------------------
//初始化变量、对象
//------------------------------------------------------------------------------------
var i, j;
var lrcString:String;
var tempText, tempTime, temp;
this.currentPlay = "";
this.listPos = 0;
this.songPos = 0;
this.song = new Sound();
this._list_xml = new XML();
this._lrc_xml = new XML();
this.listTitle = new Array();
this.listURL = 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.target_mc = target;
this.__x = __x;
this.__y = __y;
this.__depth = __depth;
//------------------------------------------------------------------------------------
//判断对象初始化时是否打开了默认的播放列表
//------------------------------------------------------------------------------------
if (_playlist == null) {
this.playlist = null;
} else {
this.playlist = _playlist;
}
//------------------------------------------------------------------------------------
//创建播放器、添加事件处理函数、载入播放列表
//------------------------------------------------------------------------------------
this.createPlayer();
this.objAddEventProc();
this.loadPlaylist(this.playlist);
}
public function createPlayer() {
var thisObj:Object = this;
/*--------------------------------------------------------------------------------------------*/
/*-------------------------------------开始创建播放器主界面-------------------------------------*/
/*---------------------------------------------------------------------------------------------*/
var controlContainer, listContainer, lyricsContainer, maskContainer;
this.target_mc.createEmptyMovieClip("player_control_container", this.__depth-3);
controlContainer = this.target_mc.player_control_container;
controlContainer._x = 0;
controlContainer._y = 0;
controlContainer.attachMovie("_player_control_bg", "_player_control_bg", getNextDepth(controlContainer));
controlContainer._player_control_bg._x = this.__x;
controlContainer._player_control_bg._y = this.__y;
controlContainer.attachMovie("_info_mc", "_info_mc", getNextDepth(controlContainer));
controlContainer._info_mc._x = controlContainer._player_control_bg._x+12;
controlContainer._info_mc._y = controlContainer._player_control_bg._y+28;
controlContainer.attachMovie("_control_panel_bg", "_control_panel_bg", getNextDepth(controlContainer));
controlContainer._control_panel_bg._x = controlContainer._player_control_bg._x+8;
controlContainer._control_panel_bg._y = controlContainer._player_control_bg._y+57;
controlContainer.attachMovie("_btn_pause", "_btn_pause", getNextDepth(controlContainer));
controlContainer._btn_pause._x = controlContainer._control_panel_bg._x+8;
controlContainer._btn_pause._y = controlContainer._control_panel_bg._y+8.5;
controlContainer.attachMovie("_btn_play", "_btn_play", getNextDepth(controlContainer));
controlContainer._btn_play._x = controlContainer._control_panel_bg._x+8;
controlContainer._btn_play._y = controlContainer._control_panel_bg._y+8.5;
controlContainer.attachMovie("_btn_stop", "_btn_stop", getNextDepth(controlContainer));
controlContainer._btn_stop._x = controlContainer._control_panel_bg._x+34;
controlContainer._btn_stop._y = controlContainer._control_panel_bg._y+10;
controlContainer.attachMovie("_btn_pre", "_btn_pre", getNextDepth(controlContainer));
controlContainer._btn_pre._x = controlContainer._control_panel_bg._x+62.5;
controlContainer._btn_pre._y = controlContainer._control_panel_bg._y+10;
controlContainer.attachMovie("_btn_next", "_btn_next", getNextDepth(controlContainer));
controlContainer._btn_next._x = controlContainer._control_panel_bg._x+84;
controlContainer._btn_next._y = controlContainer._control_panel_bg._y+10;
controlContainer.attachMovie("_control_panel_set_bg", "_control_panel_set_bg0", getNextDepth(controlContainer));
controlContainer._control_panel_set_bg0._x = controlContainer._player_control_bg._x+122;
controlContainer._control_panel_set_bg0._y = controlContainer._player_control_bg._y+80;
controlContainer.attachMovie("_control_panel_set_bg", "_control_panel_set_bg1", getNextDepth(controlContainer));
controlContainer._control_panel_set_bg1._x = controlContainer._player_control_bg._x+193;
controlContainer._control_panel_set_bg1._y = controlContainer._player_control_bg._y+80;
controlContainer.attachMovie("_btn_panel_set", "_btn_panel_set0", getNextDepth(controlContainer));
controlContainer._btn_panel_set0._x = controlContainer._control_panel_set_bg0._x+controlContainer._control_panel_set_bg0._width-controlContainer._btn_panel_set0._width;
controlContainer._btn_panel_set0._y = controlContainer._control_panel_set_bg0._y-1;
controlContainer.attachMovie("_btn_panel_set", "_btn_panel_set1", getNextDepth(controlContainer));
controlContainer._btn_panel_set1._x = (controlContainer._control_panel_set_bg1._width/2+controlContainer._control_panel_set_bg1._x)-(controlContainer._btn_panel_set1._width/2);
controlContainer._btn_panel_set1._y = controlContainer._control_panel_set_bg1._y-1;
controlContainer.attachMovie("_loopstatu_mc", "_loopstatu_mc", getNextDepth(controlContainer));
controlContainer._loopstatu_mc._x = controlContainer._player_control_bg._x+220;
controlContainer._loopstatu_mc._y = controlContainer._player_control_bg._y+15;
controlContainer.attachMovie("_player_time_mc", "_player_time_mc", getNextDepth(controlContainer));
controlContainer._player_time_mc._x = controlContainer._player_control_bg._x+205;
controlContainer._player_time_mc._y = controlContainer._player_control_bg._y+25;
controlContainer._player_time_mc.onEnterFrame = function() {
this.txt.text = thisObj.convertToString(thisObj.song.position/1000);
};
/*---------------------------------------------------------------------------------------------*/
/*-------------------------------------播放器主界面创建完成--------------------------------------*/
/*----------------------------------------------------------------------------------------------*/
//
//
/*---------------------------------------------------------------------------------------------*/
/*------------------------------------开始初始化歌曲列表界面-------------------------------------*/
/*----------------------------------------------------------------------------------------------*/
this.target_mc.createEmptyMovieClip("player_list_container", this.__depth-4);
listContainer = this.target_mc.player_list_container;
listContainer.attachMovie("_player_list_bg", "_player_list_bg", 2);
listContainer._player_list_bg._x = this.__x;
listContainer._player_list_bg._y = this.__y+105;
listContainer.attachMovie("_player_list__bg", "_player_list__bg", 0);
listContainer._player_list__bg._x = listContainer._player_list_bg._x+5;
listContainer._player_list__bg._y = listContainer._player_list_bg._y+10;
listContainer.attachMovie("_scrollbar_bg", "_scrollbar_bg", 3);
listContainer._scrollbar_bg._x = listContainer._player_list_bg._x+215;
listContainer._scrollbar_bg._y = listContainer._player_list_bg._y+24;
listContainer.attachMovie("_btn_scrollbar_mc", "_btn_scrollbar_mc", 4);
listContainer._btn_scrollbar_mc._x = listContainer._scrollbar_bg._x-1;
listContainer._btn_scrollbar_mc._y = listContainer._scrollbar_bg._y;
listContainer.attachMovie("_btn_openlist", "_btn_openlist", 5);
listContainer._btn_openlist._x = listContainer._player_list_bg._x+225;
listContainer._btn_openlist._y = listContainer._player_list_bg._y+27;
listContainer.attachMovie("_btn_add", "_btn_add", 6);
listContainer._btn_add._x = listContainer._player_list_bg._x+225;
listContainer._btn_add._y = listContainer._player_list_bg._y+50;
/*---------------------------------------------------------------------------------------------*/
/*------------------------------------初始化歌曲列表界面完成-------------------------------------*/
/*----------------------------------------------------------------------------------------------*/
//
//
/*---------------------------------------------------------------------------------------------*/
/*-------------------------------------开始初始化歌词秀界面--------------------------------------*/
/*----------------------------------------------------------------------------------------------*/
this.target_mc.createEmptyMovieClip("player_lyrics_container", this.__depth-5);
lyricsContainer = this.target_mc.player_lyrics_container;
lyricsContainer.attachMovie("_player_lyrics__bg", "_player_lyrics__bg", 0);
lyricsContainer._player_lyrics__bg._x = this.__x+277;
lyricsContainer._player_lyrics__bg._y = this.__y+5;
lyricsContainer.attachMovie("_player_lyrics_bg", "_player_lyrics_bg", 2);
lyricsContainer._player_lyrics_bg._x = lyricsContainer._player_lyrics__bg._x-3;
lyricsContainer._player_lyrics_bg._y = lyricsContainer._player_lyrics__bg._y-5;
/*---------------------------------------------------------------------------------------------*/
/*-------------------------------------初始化歌词秀界面完成--------------------------------------*/
/*----------------------------------------------------------------------------------------------*/
//
//
/*---------------------------------------------------------------------------------------------*/
/*--------------------------------------开始创建遮罩层界面---------------------------------------*/
/*----------------------------------------------------------------------------------------------*/
this.target_mc.createEmptyMovieClip("player_mask_container", this.__depth-2);
maskContainer = this.target_mc.player_mask_container;
maskContainer.attachMovie("_mask_control_top", "_mask_control_top", getNextDepth(maskContainer));
maskContainer._mask_control_top._x = controlContainer._player_control_bg._x;
maskContainer._mask_control_top._y = controlContainer._player_control_bg._y-maskContainer._mask_control_top._height+6.5;
maskContainer.attachMovie("_mask_control_middle", "_mask_control_middle", getNextDepth(maskContainer));
maskContainer._mask_control_middle._x = controlContainer._player_control_bg._x;
maskContainer._mask_control_middle._y = controlContainer._player_control_bg._y+controlContainer._player_control_bg._height-7.2;
maskContainer.attachMovie("_mask_list_bottom", "_mask_list_bottom", getNextDepth(maskContainer));
maskContainer._mask_list_bottom._x = listContainer._player_list_bg._x;
maskContainer._mask_list_bottom._y = listContainer._player_list_bg._y+listContainer._player_list_bg._height-7;
maskContainer.attachMovie("_mask_lyrics_top", "_mask_lyrics_top", getNextDepth(maskContainer));
maskContainer._mask_lyrics_top._x = lyricsContainer._player_lyrics_bg._x;
maskContainer._mask_lyrics_top._y = lyricsContainer._player_lyrics_bg._y-maskContainer._mask_lyrics_top._height+6.5;
maskContainer.attachMovie("_mask_lyrics_bottom", "_mask_lyrics_bottom", getNextDepth(maskContainer));
maskContainer._mask_lyrics_bottom._x = lyricsContainer._player_lyrics_bg._x;
maskContainer._mask_lyrics_bottom._y = lyricsContainer._player_lyrics_bg._y+lyricsContainer._player_lyrics_bg._height-7;
/*---------------------------------------------------------------------------------------------*/
/*--------------------------------------创建遮罩层界面完成---------------------------------------*/
/*----------------------------------------------------------------------------------------------*/
}
public function objAddEventProc() {
/*----------创建对当前类的本地引用-----------*/
var thisObj:Object = this;
/*------------------------------------------*/
var volumeDrag:Boolean = false;
var panDrag:Boolean = false;
var listDrag:Boolean = false;
var controlContainer = this.target_mc.player_control_container;
var listContainer = this.target_mc.player_list_container;
//------------------------------------------------------------------------------------
//播放按钮 单击 处理函数
//------------------------------------------------------------------------------------
controlContainer._btn_play.onRelease = function() {
thisObj.song.start(thisObj.songPos/1000, 1);
controlContainer._btn_play._visible = 0;
controlContainer._btn_pause._visible = 1;
};
//------------------------------------------------------------------------------------
//暂停按钮 单击 处理函数
//------------------------------------------------------------------------------------
controlContainer._btn_pause.onRelease = function() {
thisObj.songPos = thisObj.song.position;
thisObj.song.stop();
controlContainer._btn_play._visible = 1;
controlContainer._btn_pause._visible = 0;
};
//------------------------------------------------------------------------------------
//停止按钮 单击 处理函数
//------------------------------------------------------------------------------------
controlContainer._btn_stop.onRelease = function() {
thisObj.songPos = 0;
controlContainer._btn_play._visible = 1;
thisObj.song.start(0, 1);
thisObj.song.stop();
};
//------------------------------------------------------------------------------------
//音量控制MC 鼠标移进 处理函数
//------------------------------------------------------------------------------------
controlContainer._btn_panel_set0.onRollOver = function() {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -