zoukankan      html  css  js  c++  java
  • AS3版MP3播放器核心

    代码

    package  {
            
    import flash.media.Sound;
            
    import flash.media.SoundChannel;
            
    import flash.media.SoundLoaderContext;
            
    import flash.media.SoundMixer;

            
    public class MediaPlayerCore {
                    
    private var sound:Sound;
                    
    private var soundCh:SoundChannel;
                    
    private var soundCon:SoundLoaderContext;
                    
    private var position:Number;
                    
    private var isPlaying:Boolean;
                    
    private var isPause:Boolean;
                    
    private static var BUFFERTIME:Number = 10000;
                            
                    
    public function MediaPlayerCore()
                    {
                            isPause 
    = false;
                            isPlaying 
    = false;
                            SoundMixer.bufferTime 
    = BUFFERTIME; 
                    }
                   
    //创建一个声音对象
                     
    //@param url 媒体地址
                     
    // @param playNow 是否马上播放,默认为真      
                    public function createSound(url:String,playNow:Boolean = true):void
                    {                        
                            dispose();
                            sound 
    = new Sound();
                            sound.load(
    new URLRequest(url));
                            sound.addEventListener(IOErrorEvent.IO_ERROR,errorHandler);             
                            
    if(playNow)
                                    play();                            
                    }
                    
    //播放
                      
    //@param offset 声音从哪开始      
                    public function play(offset:Number = 0):void
                    {
                            
    if(isPause)
                                    soundCh 
    = sound.play(position);
                            
    else
                                    soundCh 
    = sound.play(offset);
                            isPlaying 
    = true;
                            isPause 
    = false;
                    }
                   
    //暂停        
                    public function pause():void
                    {
                            
    if(isPlaying)
                            {                        
                                    position 
    = soundCh.position;
                                    stop();        
                                    isPause 
    = true;
                            }
                    }
                    
    //停止        
                    public function stop():void
                    {
                            
    if(isPlaying)
                            {
                                    soundCh.stop();
                                    isPlaying 
    = false;                                
                            }
                    }
                    
    //播放位置        
                    public function get Position():Number
                    {
                            
    if(soundCh == null)
                                    
    return 0;                    
                            
    return Math.round(soundCh.position);
                    }
                    
    //声音对象长度        
                    public function get Length():Number
                    {
                            
    if(sound == null)
                                    
    return 0;
                            
    return Math.round(sound.length*sound.bytesTotal/sound.bytesLoaded);
                    }
                    
    //声音对象总共字节        
                    public function get BytesTotal():Number
                    {
                            
    if(sound == null)
                                    
    return 0;
                            
    return sound.bytesTotal;
                    }
                    
    //声音对象加载字节        
                    public function get BytesLoaded():Number
                    {
                            
    if(sound == null)
                                    
    return 0;
                            
    return sound.bytesLoaded;
                    }
                    
    //设置缓冲时间        
                    public function set BufferTime(time:Number):void
                    {
                            SoundMixer.bufferTime
    =time;
                    }
                   
    //中途换歌的时候用的
                    private function dispose():void
                    {
                            
    if(sound == null)
                                    
    return ;
                            
    if(sound.isBuffering)
                                    sound.close();
                            stop();                 
                            sound 
    = null;
                    }
                   
    // 处理错误用
                    private function errorHandler(e:IOErrorEvent):void
                    {
                            sound.removeEventListener(IOErrorEvent.IO_ERROR,errorHandler);
                            sound 
    = null;
                    }                
            }
  • 相关阅读:
    Delphi操作Excel大全
    一名Delphi程序员的开发习惯
    七维互联(www.7wei.com)
    Android开发数据库三层应用-DataSnap
    如何破解excel宏的密码
    让Delphi的DataSnap发挥最大效率
    使用 TRegistry 类[1]: 显示各主键下的项
    ini 文件操作记要(1): 使用 TIniFile
    Delphi经验总结(1)
    Delphi经验总结(2)
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/1614771.html
Copyright © 2011-2022 走看看