当我在特定项目上推进时间线时,我目前难以从播放中移除特定的声音。从主时间线中删除在影片剪辑中调用的声音
用户在时间轴上选择一个特定的项目,该项目将显示特定的动画片段,然后在MOUSE_DOWN上播放特定的声音。
的事件监听用于MOUSE_DOWN它存在如下:
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是被称为“水”,其中包含的水的动画和下面的代码以启动水声的movieclip:
var sfxWater:sfxwater;
var waterChannel:SoundChannel;
sfxWater = new sfxwater;
waterChannel = sfxWater.play();
帧“waterE”水消失的动画上存在和代码sfxWater.stop();
。
当用户在根时间轴上超出此帧时,尽管该时间线上不再存在动画片段,但水的音效仍保留在MOUSE_DOWN上。
理想的结果将是在MOUSE_DOWN上播放单个声音,并且仅当在主时间线上可见此动画片段时才停止在MOUSE_UP上。如果任何人可以提供任何帮助,以防止声音播放和删除此事件监听器(如果可能,通过主时间轴上的代码),这将不胜感激。
问候, 达伦
有什么问题: function stopWater(event:MouseEvent):void { removeEventListener(MouseEvent.MOUSE_DOWN,sprayWater); removeEventListener(MouseEvent.MOUSE_UP,stopWater); waterarm.water.gotoAndPlay(“waterE”); } – Duke 2012-07-18 06:34:41
感谢您的回复Michael。我没有在我原来的帖子中说过用户在“喷水”时没有从这个框架中移出,他们应该能够按下按钮多次,因为它们在根时间轴上有碰撞检测确定它们是否在别处进行或在MOUSE_DOWN时保持在该帧上。 – 2012-07-18 08:36:05
“闪光灯给我一个阵列,基本上说'sprayWater'不存在。”是功能还是动画片段? 你可能想寻找到一个自定义的dispatchEvent类或添加在您的MOUSE_DOWN一条线,说是这样的: '如果(影片剪辑){//如果影片剪辑存在 //做的东西 }' 我需要以习惯enterkey提交评论... – Duke 2012-07-18 15:07:27