• [导入]Flash播放器


      用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
    ================================
      /\_/\                        
     (=^o^=)  Wu.Country@侠缘      
     (~)@(~)  一辈子,用心做一件事!
    --------------------------------
      学而不思则罔,思而不学则怠!  
    ================================
  • 相关阅读:
    HDU 1527 取石子游戏 (威佐夫博奕)
    HDU 1159 Common Subsequence (LCS)
    HDU 1160 FatMouse's Speed (LIS)
    HDU 2577 How to Type (DP)
    csu 1395: Timebomb (模拟)
    csu 1556: Jerry's trouble(大数取模)
    csu 1553: Good subsequence (最长连续子序列)
    csu 1548: Design road (三分)
    csu 1547: Rectangle (01背包)
    csu 1541: There is No Alternative(Kruskal 最小生成树)
  • 原文地址:https://www.cnblogs.com/WuCountry/p/305752.html
Copyright © 2020-2023  润新知