2009
12.15.

flex_musicplayer5

这是几个月前完成的一款播放器作品,之后项目废弃。如今,又重新拾起,所以我写的这个播放器也在原来基础上做了些许修改。

这是个用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/

 flex_musicplayer1

flex_musicplayer2

flex_musicplayer3

flex_musicplayer4

flex_musicplayer6

flex_musicplayer7

评论暂缺 立即发表评论

还没有任何评论。

这篇文章上的评论 RSS feed TrackBack URL

留下评论

©2009 All Rights Reserved. Powered by WordPress. Skin was designed by VDIT.com