这是几个月前完成的一款播放器作品,之后项目废弃。如今,又重新拾起,所以我写的这个播放器也在原来基础上做了些许修改。
这是个用FLASH+JS来实现的播放器功能。FLASH实际上只是一个表现工作,通过接口来和JS交互,真正的播放是通过JS来调用WINDOWS MEDIA PLAYER来播放的。播放器具有一般播放器的基本功能,同时做了部分优化和创新。
1.解决了一些非IE但是IE内核浏览器第二次访问导致与JS交互不成功的问题。
public function MusicPlayer()
{
this.addEventListener(Event.ENTER_FRAME, init); //在构造函数中监听延时注册Callback,解决其他IE内核浏览器与JS交互问题
}
private function init(e:Event):void
{
this.removeEventListener(Event.ENTER_FRAME, init);
if(ExternalInterface.available)
{
ExternalInterface.addCallback("controls", controls);
}
}
2.如果打开多个音乐盒浏览器窗口,能保证每次只播最新控制的一个播放器音乐。
private var conn:LocalConnection = new LocalConnection();
//初始化时取得时间戳,传递给上一个LC,判断是否是自身
var d:Date = new Date();
Year = d.fullYear, Month=d.month, Day=d.day, Hour=d.hours, Minute=d.minutes, Second=d.seconds;
playerID = Number(Year.toString() + Month.toString() + Day.toString() + Hour.toString() + Minute.toString() + Second.toString());
private function creatConn():void
{
//连接对象,只播放当前播放器
conn.addEventListener(StatusEvent.STATUS, onStatus);
conn.addEventListener(AsyncErrorEvent.ASYNC_ERROR, connError);
conn.client = this;
conn.send("51MusicPlayer","connClose",playerID);
}
private function onStatus(e:StatusEvent):void
{
switch (e.level) {
case "status":
trace("SEND成功");
break;
case "error":
trace("SEND失败");
break;
}
setTimeout(connConnect,10);
}
private function connConnect():void
{
try
{
conn.connect("51MusicPlayer");
trace("尝试建立连接");
}
catch(e:ArgumentError)
{
if(e.errorID == 2082)
{
trace(e.message);
}
if(e.errorID == 2083)
{
trace(e.message);
}
}
}
private function connError(e:AsyncErrorEvent):void
{
trace(e.text);
}
public function connClose(id:Number):void
{
if(id!=playerID)
{
conn.close();
trace("关闭连接");
stopSong(null);
}
trace("播放器ID",id);
}
3.通过皮肤文件名识别播放模式(最完整、比较完整、适度精简、精简、极精简的皮肤模式)。
4.换肤功能。换肤过程不影响音乐的播放。
具体实例请参看:http://mp3.51.com/tudou_8/
评论(0) 阅读(467)







