0

当我在特定项目的时间线上前进时,我目前很难从播放中删除特定的声音。

用户选择时间轴上的特定项目,该项目将显示特定的影片剪辑,然后将在 MOUSE_DOWN 上播放特定的声音。

MOUSE_DOWN 的 eventListener 存在如下:

stage.addEventListener(MouseEvent.MOUSE_DOWN, sprayWater);
stage.addEventListener(MouseEvent.MOUSE_UP, stopWater);

function sprayWater(event:MouseEvent):void
{
    waterarm.gotoAndStop(2);
    trace("SPRAYING WATER");    
}

function stopWater(event:MouseEvent):void
{
    waterarm.water.gotoAndPlay("waterE");   
}

在“waterarm”的第 2 帧上是一个名为“water”的电影剪辑,其中包含水的动画和以下用于启动水声的代码:

var sfxWater:sfxwater;
var waterChannel:SoundChannel;
sfxWater = new sfxwater;
waterChannel = sfxWater.play();

在“waterE”帧上,存在水消失的动画和代码sfxWater.stop();

当用户在根时间轴上超过这一帧时,水的声音效果仍然保留在 MOUSE_DOWN 上,尽管此时时间轴上不再存在动画剪辑。

理想的结果是只有当该影片剪辑在主时间轴上可见时,才会在 MOUSE_DOWN 上播放单个声音并在 MOUSE_UP 上停止。如果有人可以提供任何帮助来阻止声音播放和删除此事件侦听器(如果可能,通过主时间线上的代码),我们将不胜感激。

问候,达伦

4

1 回答 1

1

如果您只想停止声音,为什么不使用SoundMixer.stopAll().

您可以在检查所述影片剪辑的visible属性后在 MOUSE_UP 事件中使用它。

于 2012-07-18T12:23:53.717 回答