【问题标题】:Actionscript 3: more than one sound channel possible?Actionscript 3:可能有多个声道?
【发布时间】:2014-08-08 08:08:18
【问题描述】:

我的问题是 Flash 中有几个按钮在单击时会播放声音,我希望一次只有一个按钮/声音处于活动状态。问题是,如果在 Flash 窗口之外释放鼠标按钮,则最后一个按钮的声音会一直响到最后,如果同时按下另一个按钮,它也会同时开始响起,依此类推。

所以我想检查分配给除当前按下的按钮之外的任何其他按钮的 SoundChannel 是否正在播放,如果是,则停止该 SoundChannel,只让当前按钮的 SoundChannel 播放。

但是如果这个 Actionscript SoundChannel 是所有按钮的单个对象,这将不起作用,然后我看不到防止多个声音同时响起的解决方案,除了添加一个“警告”框,这似乎是多余的并且无效。那么,您能否为 Flash 电影中的每个按钮或对象设置一个单独的 SoundChannel,否则我如何才能做到这一点,以便无论在 Flash 窗口的内部还是外部释放鼠标,都只能同时发出一个按钮的声音?

【问题讨论】:

    标签: actionscript soundchannel


    【解决方案1】:

    你能把按钮放在一个容器中,并为 MouseEvent.MOUSE_UP 和处理程序添加事件监听器,以检查它的光标是否在容器之外,如下所示:

       private static function onMouseDownOutside(event:MouseEvent) : void {
             var mouseDownInsideComponent : Boolean = false;
             mouseDownInsideComponent = yourContainer.hitTestPoint(event.stageX, event.stageY, false);
    
             if (!mouseDownInsideComponent) {
                //stop the sound
             }
       }
    

    只是为了在声音离开容器时停止声音?似乎是一种可能的解决方法。

    【讨论】:

    • 那么,mouseDownInsideComponent 测试舞台的位置?如果为假,则表示鼠标在外面?可能会仔细看看。
    • 事实上,奇怪的是,我注意到 MOUSE_UP 确实在 Flash 窗口/舞台外触发 adobe flash 内。它在网络浏览器中,一旦单击并移出 Flash 对象区域,它就不会触发。也许我应该重新问这个问题,但要换一种方式?
    猜你喜欢
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 2017-07-02
    • 2015-09-13
    相关资源
    最近更新 更多