Actionscript 3:可能有多个声道?

时间:2014-06-18 06:37:26

标签: actionscript soundchannel

我的问题是在闪光灯中有几个按钮可以在点击时播放声音,我希望一次只能激活一个按钮/声音。问题是,如果鼠标按钮被释放到闪光灯窗口之外,则最后一个按钮的声音会一直响到最后,如果同时按下另一个按钮,它也会同时开始发声,依此类推。

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

但是如果这个Actionscript SoundChannel是所有按钮的单个对象,那么这不会起作用,然后我不会看到一个解决方案来防止多个声音同时发出声音,而不是添加一个'警告'框,似乎多余和无效。那么你可以为flash电影中的每个按钮或对象设置一个单独的SoundChannel,否则我怎样才能防止这种情况发生,因此无论鼠标被释放到哪里,在flash窗口内部还是外部,只有一个按钮声音可以同时发出声音?

1 个答案:

答案 0 :(得分:0)

你可以将按钮放在容器中,并为MouseEvent.MOUSE_UP添加addEventListener,并在处理程序中检查它是否在容器之外,如下所示:

   private static function onMouseDownOutside(event:MouseEvent) : void {
         var mouseDownInsideComponent : Boolean = false;
         mouseDownInsideComponent = yourContainer.hitTestPoint(event.stageX, event.stageY, false);

         if (!mouseDownInsideComponent) {
            //stop the sound
         }
   }

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