【问题标题】:Actionscript 3.0 sounds accountingActionscript 3.0 听起来会计
【发布时间】:2011-04-15 11:34:04
【问题描述】:

我有一组 SoundChannel 正在播放。 当新的声音要播放时,我将它的 SoundChannel 附加到这个数组中。 我必须维护这样一个数组才能一次停止所有声音。

我想在阵列完成后从阵列中删除声道,以防止阵列无限增长。但是当我捕捉到 e=Event.SOUND_COMPLETE 时,我没有关于声道的信息。只能将 Sound 作为 e.target。

实际上,我可以维护 Array of pair (Sound, SoundChannel)。 但也许还有更轻量级的解决方案?

【问题讨论】:

    标签: actionscript-3 audio


    【解决方案1】:

    你不需要那个数组 :) 你可以使用 SoundMixer.StopAll();停止所有正在播放的声音。

    编辑:既然你想停止所有特殊的声音,我有一个新的解决方案。 首先,您创建一个新的 actionscript 类并将此代码添加到其中。

    package
    {
        import flash.display.DisplayObject;
        import flash.events.Event;
        import flash.media.SoundChannel;
    
        public class SpecialSoundChannel extends SoundChannel
        {
            var _parent:DisplayObject;
    
            public function SpecialSoundChannel(Parent:DisplayObject)
            {
                super();
    
                _parent = Parent;
    
                _parent.addEventListener("StopSpecialSound", stopChannel);
            }
    
            public function stopChannel(e:Event):void
            {
                //DO SOME OTHER STUFF YOU WANT DONE.
    
                stop();
            }
        }
    }
    

    每次你想要添加一个不是音乐的特殊声音时,你都可以这样做:

    var _sound:SpecialSoundChannel = new SpecialSoundChannel(this);
    

    “this”是您播放和停止声音通道的类,我假设它与您创建声音通道的位置相同,因此可以将其称为“this”。您将以下函数添加到该类。

    public function stopSpecialSounds():void
    {
        var _e:Event = new Event("StopSpecialSound");
        dispatchEvent(_e);
    }
    

    如果你想停止所有特殊的声音,你只需调用最后一个函数。

    【讨论】:

    • 感谢您的回答。但我不想停止每一个声音。我只需要停止阵列中的声音。例如,可能有一些音乐正在播放。当我停止声音时,它必须继续播放。
    • “我必须维护这样一个数组,以便能够一次停止所有声音。”在我看来,您希望能够一次停止所有声音,因此 soundMixer 可以在您想要的那一刻为您做到这一点,而无需您将所有声道保存在一个数组中。
    • 好吧,我已经更新了我的评论。换句话说,我不会停止所有声音。我将只停止“特殊”声音,即我阵列中的所有声音。
    • 谢谢,米歇尔。漂亮的解决方案!
    • 很高兴我能帮上忙 :) 你可能想接受答案,所以这个问题可以保存为已回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多