Sound 音乐工具类

package 

{

    import flash.events.Event;

    import flash.events.EventDispatcher;

    import flash.media.Sound;

    import flash.media.SoundChannel;

    import flash.media.SoundMixer;

    import flash.media.SoundTransform;

    import flash.net.URLLoader;

    import flash.net.URLRequest;

    import flash.utils.Dictionary;

    

    /*

    *使用方法:一般是直接在文档类初始化一个静态对象,比如定义为Main.soundManager

    *添加一个声音:Main.soundManager.addSound(声音id,声音url地址);//通过id访问管理器中的声音

    *添加并播放一个声音:Main.soundManager.addAndPlaySound(声音id,声音url地址,循环次数);//如果需要一直播放背景音,建议把循环次数设置为int.MAX_VALUE

    *播放指定声音:Main.soundManager.play(声音id,循环次数);//默认为播放一次

    *停止指定声音:Main.soundManager.stop(声音id);

    *获得指定声音的Sound对象:Main.soundManager.getSound(声音id);

    *获得指定声音的SoundChannel对象:Main.soundManager.getSoundChannel(声音id);

    *移除指定声音:Main.soundManager.removeSound(声音id);

    *设置音量大小:Main.soundManager.setVolume(声音大小);//0静音~1最大

    *停止播放所有声音:Main.soundManager.stopAllSound();

    */





    public class SoundManager extends EventDispatcher

    {

        private var soundDic:Dictionary;

        private var soundChannelDic:Dictionary;

        private var urlLoader:URLLoader;

        

        public function SoundManager()

        {

            super();

            init();

        }

        private function init():void

        {

            soundDic = new Dictionary  ;

            soundChannelDic = new Dictionary  ;

            urlLoader = new URLLoader  ;

        }

        public function addSound(id:String,url:String):void

        {

            if (soundDic[id])

            {

                return;

            }

            var sound:Sound = new Sound  ;

            sound.addEventListener(Event.COMPLETE,addComplete);

            sound.load(new URLRequest(url));

            function addComplete(e:Event):void

            {

                sound.removeEventListener(Event.COMPLETE,addComplete);

                soundDic[id] = sound;

            }

        }

        public function addAndPlaySound(id:String,url:String,loops:int=0):void

        {

            if (soundDic[id])

            {

                /**如果已经有这个音乐 那么就直接播放不添加**/

                soundDic[id].play();

                return;

            }

            var sound:Sound = new Sound  ;

            sound.addEventListener(Event.COMPLETE,addAndPlayComplete);

            sound.load(new URLRequest(url));

            function addAndPlayComplete(e:Event):void

            {

                sound.removeEventListener(Event.COMPLETE,addAndPlayComplete);

                soundDic[id] = sound;

                var soundChannel:SoundChannel = sound.play(0,loops);

                soundChannelDic[id] = soundChannel;

            }

        }

        public function play(id:String,loops:int=0):void

        {

            if (soundDic[id])

            {

                if (soundChannelDic[id])                

                {                    

                    soundChannelDic[id].stop();       

                    soundChannelDic[id] = soundDic[id].play(0, loops);    

                }               

                else       

                {           

                    soundChannelDic[id] = soundDic[id].play(0, loops);   

                } 

            }

        }

        public function stop(id:String):void

        {

            if (soundChannelDic[id])

            {

                soundChannelDic[id].stop();

            }

        }

        public function getSound(id:String):Sound

        {

            if (soundDic[id])

            {

                return soundDic[id];

            }

            return null;

        }

        public function getSoundChannel(id:String):SoundChannel

        {

            if (soundChannelDic[id])

            {

                return soundChannelDic[id];

            }

            return null;

        }

        public function removeSound(id:String):void

        {

            if (soundDic[id])

            {

                if (soundChannelDic[id])

                {

                    soundChannelDic[id].stop();

                    soundChannelDic[id] = null;

                    delete soundChannelDic[id];

                }

                soundDic[id] = null;

                delete soundDic[id];

            }

        }

        public function setVolume(value:Number):void

        {

            SoundMixer.soundTransform = new SoundTransform(value);

        }

        public function stopAllSound():void

        {

            SoundMixer.stopAll();

        }

    }

}

 

你可能感兴趣的:(工具类)