[导入]Flash播放器

作者用Flash制作了MP3播放器想放博客当电台,但速度慢。作者分享了制作中遇到的问题,如字符集处理、setInterval函数应用、MP3文件读取等,还给出了AS代码,包括变量初始化、加载文件、播放控制等函数。

  用Flash做了个MP3播放器,想放在自己的博客上做个自己的电台,可惜速度太慢了,想必没人会等很长时间来听一首MP3的,虽然我很喜欢的曲子。所以只好放着了!可以在http://www.ArtKing.cn/ArtPlay/上看到这个作品,但基本上难得听到什么!郁闷,有时间准备改进一下。就这个Flash播放器,还是写一些自己的想法。上次是那个留言板。

1、还是字符集的问题,我不真不知道怎么处理了。后台管理还只能用GB2312,而Flash的数据读取还得用UTF-8。

2、关于setInterval函数的应用,可以说这是一个很好的延时函数,但总不能把所有的情况都想到,所以还是有时候没能及进的清理掉计时器,结果出了问题。

3、关于MP3文件的读取,也有些问题。不知道为什么,在FlashMX里测试的时候不能读取,而加载到IE里就可以了。还有,有些MP3没声音,有些有,不知道是什么原因。

4、以下是AS原内容,希望有些参考价值。

//some var initialization
//
var m_mp3  =new Sound();  //MP3实例
var m_flie_name =new Array(2);  //文件名与歌曲名统一
var m_volume =75;    //声音大小
var m_start_time=0;     //开始时的播放的时间,用于暂停后恢复播放
var m_all_time =1;     //声音所有的时间
var m_palyed =0;     //已经播放的时间
var m_mp3_number=1;     //第几首MP3,用于多曲播放时使用
var m_mp3_isplay=false;    //记录MP3当前是否正在播放
var file_name ="";    //MP3文件名   
var music_name ="";    //歌曲信息
var text_i  =0;     //信息滚动参数,字数
var m_play_way ="列表播放"   //MP3播放方法,"列表播放"或"单曲循环"
var m_is_stop =true;    //用于控制MP3是否暂停
// 
//Load varible form Server or Text Files
function loadFileList(){
 if(m_music_text.substr(m_music_text.length-4,4)==".mp3"){
  file_name=music_name=m_music_text;
 }else{
  loadVariables("list.asp",this,"POST"); 
 }
 m_load_timer=setInterval(loadMp3,2000);
}
//Load MP3 Flies
function loadMp3(){ 
 //确定声音文件是否已经加载
 clearInterval(m_load_timer);
 if(file_name==""){
  m_music_text="[加载音乐文件失败!]";
  return false;
 }
 m_mp3.loadSound(file_name,false);
 m_music_text="[加载缓存完成!]"
 m_all_time="["+Math.floor(m_mp3.duration/60000)+"分"+Math.floor(m_mp3.duration/1000)%60+"秒]";
 trace(m_all_time); 
 m_play._visible=true;
 m_pause._visible=false;
 m_play_timer=setInterval(playMp3,500);
}
//实时播放函数,用于更新百分比与调整音量
function my3Playing(){
//随时改变声音时间的大小
 m_volume=50-m_volume_control.vertFader._y;
 m_mp3.setVolume(m_volume);
// trace(m_volume);
//检测MP3是否加载完成,是就播放,否则就显示加载信息
 if(file_name==""){
  clearInterval(m_play_timer);
  m_music_text="[加载音乐文件失败!]";
  return false;
 }
 m_loaded=m_mp3.getBytesLoaded();
 m_total =m_mp3.getBytesTotal();
// trace(m_loaded+":"+m_total);
 if(m_loaded<m_total){
  m_music_text="<"+m_mp3_number+">[加载中..."+Math.floor(m_loaded/m_total*100)+"%]"
  return false;
 }else{
  m_minute =Math.floor(m_mp3.position/60000);
  if(m_minute<10)m_minute="0"+m_minute;
  m_second =Math.floor(m_mp3.position/1000)%60;
  if(m_second<10)m_second="0"+m_second;
  m_percent=m_minute+":"+m_second;
  m_all_time="["+Math.floor(m_mp3.duration/60000)+"分"+Math.floor(m_mp3.duration/1000)%60+"秒]";
 // trace(m_percent);
  m_music_text_t="                    <"+m_mp3_number+">"+music_name+"--<";
  if(!m_is_stop){
   m_music_text_t+="正在播放>("+m_play_way+")";
  }else{
   m_music_text_t+="暂停中>("+m_play_way+")";
  }
  m_music_text_t+=m_all_time;
  m_music_text=m_music_text_t.substr(text_i,m_music_text_t.length);
  text_i++;
  if(text_i>m_music_text_t.length)text_i=0;
  if(m_mp3.position>=m_mp3.duration){
   clearInterval(m_timer);
   if(m_play_way=="单曲循环"){    
    m_start_time=0;     
    playMp3();
   }else{   
    m_mp3_number++;
    loadFileList();
   }   
  } 
 }

}
//自动加载音乐文件
loadFileList();
//m_timer=setInterval(my3Playing,300);
//playMp3();
function playMp3(){
 m_mp3.start(m_start_time,1);
 m_is_stop=false;
 m_timer=setInterval(my3Playing,300);
 clearInterval(m_play_timer);
}
//pauseMp3
function pauseMp3(){
 m_palyed=m_mp3.position;
 m_start_time=m_palyed/1000;
 m_mp3.stop();
 m_is_stop=true;
 my3Playing();  //更新信息文本
 clearInterval(m_timer);
}
//stopMp3
function stopMp3(){
 clearInterval(m_timer);
 if(m_music_text.substr(m_music_text.length-4,4)==".mp3"){
  file_name=music_name=m_music_text;  
  m_load_timer=setInterval(loadMp3,500);
  m_start_time=0;
 }else{
  m_mp3.stop();
  m_start_time=0;
  text_i  =0;
  m_music_text="[已经停止播放]";
//  my3Playing();
  m_play._visible=false;
  m_pause._visible=true;
 } 
}
//Next mp3
function nextMp3(){
 clearInterval(m_timer);
 m_music_text="[音乐载入中...]"
 my3Playing();
 m_mp3_number++;
 trace(m_mp3_number);
 loadFileList();
}
//forward mp3
function forwdMp3(){
 clearInterval(m_timer);
 m_music_text="[音乐载入中...]"
 my3Playing();
 m_mp3_number--;
 if(m_mp3_number<=0)m_mp3_number=1;
 trace(m_mp3_number);
 loadFileList();
}

结束努力吧!


文章来源: http://computer.mblogger.cn/wucountry/posts/31493.aspx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值