Check if SoundChannel is playing sound

前端 未结 3 1700
陌清茗
陌清茗 2020-12-19 08:52

How to check reliably if a SoundChannel is still playing a sound?

For example,

[Embed(source=\"song.mp3\")]
var Song: Class;

var s: Song = new Song         


        
3条回答
  •  南笙
    南笙 (楼主)
    2020-12-19 09:35

    I've done a little research and I can't find a way to query any object to determine if a sound is playing. You'll have to write a wrapper class and manage it yourself it seems.

    
    package
    {
        import flash.events.Event;
        import flash.media.Sound;
        import flash.media.SoundChannel;
    
        public class SoundPlayer
        {
            [Embed(source="song.mp3")]
            private var Song:Class;
    
            private var s:Song;
            private var ch:SoundChannel;
            private var isSoundPlaying:Boolean;
    
            public function SoundPlayer()
            {
                s = new Song();
                play();
            }
    
            public function play():void
            {
                if(!isPlaying)
                {
                    ch = s.play();
                    ch.addEventListener(
                        Event.SOUND_COMPLETE,
                        handleSoundComplete);
                    isSoundPlaying = true;
                }
            }
    
            public function stop():void
            {
                if(isPlaying)
                {
                    ch.stop();
                    isSoundPlaying = false;
                }
            }
    
            private function handleSoundComplete(ev:Event):void
            {
                isSoundPlaying = false;
            }
        }
    }
    

提交回复
热议问题