Actionscript 3 ActionScript3.0声音会计
我有一系列正在播放的声道。 当播放新声音时,我将其SoundChannel附加到此阵列。Actionscript 3 ActionScript3.0声音会计,actionscript-3,audio,Actionscript 3,Audio,我有一系列正在播放的声道。 当播放新声音时,我将其SoundChannel附加到此阵列。 我必须维护这样一个阵列,以便能够同时停止所有声音 我想在阵列结束时从阵列中删除声音通道,以防止阵列的有限增长。但当我捕捉到e=Event.SOUND_COMPLETE时,我没有关于声道的信息。只能将声音作为e目标 实际上,我可以维护成对数组(声音,声音通道)。 但也许还有更多的轻量级解决方案?您不需要该阵列:)您可以使用SoundMixer.StopAll();停止播放的每一个声音 编辑:既然你想停止所有特
我必须维护这样一个阵列,以便能够同时停止所有声音 我想在阵列结束时从阵列中删除声音通道,以防止阵列的有限增长。但当我捕捉到e=Event.SOUND_COMPLETE时,我没有关于声道的信息。只能将声音作为e目标 实际上,我可以维护成对数组(声音,声音通道)。
但也许还有更多的轻量级解决方案?您不需要该阵列:)您可以使用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”是您播放和停止soundchannel的类,我假设它与您创建soundchannel的类相同,因此可以称之为“this”。将以下函数添加到该类中
public function stopSpecialSounds():void
{
var _e:Event = new Event("StopSpecialSound");
dispatchEvent(_e);
}
如果您想停止所有特殊声音,只需调用最后一个函数。谢谢您的回答。但我不想停止每一个声音。我只需要停止阵列中的声音。例如,可能会播放一些音乐。当我停止声音时,它必须继续播放。“我必须保持这样一个阵列,以便能够一次停止所有声音。”在我看来,你希望能够一次停止所有声音,因此混音器可以在你想要的时候为你做这件事,而不必将所有的声道保持在一个阵列中。嗯,我已经更新了我的评论。换句话说,我不会停止所有的声音。我将只停止“特殊”声音,即我阵列中的所有声音。谢谢,米切尔。漂亮的解决方案!很高兴我能提供帮助:)并且您可能希望接受答案,因此此问题可以存储为已回答。