我正在使用as3
播放器加载swf
类似的视频/章节,在其中我有图像和级别sound starts to play at frame 1
。
当我使用之前或以后加载的文件更改它时,我正在尝试停止加载的swf
的声音,但似乎没有任何效果。
我试过这个:
loaded_swf.stop();
SoundMixer.stopAll();
media_container.removeChild(loaded_swf);
我也试过了这个:
loaded_swf.stop();
var snd_transform:SoundTransform = SoundMixer.soundTransform;
snd_transform.volume = 0;
SoundMixer.soundTransform = snd_transform;
SoundMixer.stopAll();
media_container.removeChild(loaded_swf);
而且:
loaded_swf.stop();
var snd_transform:SoundTransform = loaded_swf.soundTransform;
snd_transform.volume = 0;
swf.soundTransform = snd_transform;
SoundMixer.stopAll();
media_container.removeChild(loaded_swf);
时间轴声音无法通知SoundMixer
方法
是否存在解决此问题的方法?
答案 0 :(得分:0)
这是一个小的递归函数,它会使动画片段中的所有音频静音。如果你正在使用时间轴声音,这应该关闭它们。
public function stopAllSounds(mc:MovieClip):void
{
var mute:SoundTransform = new SoundTransform(0.0);
mc.soundTransform = mute;
for (var i:int = 0; i < mc.numChildren; ++i)
{
var m:DisplayObject = mc.getChildAt(i);
if(m is MovieClip) stopAllSounds(m);
}
}
答案 1 :(得分:-1)
编辑James的答案以确保所有内容都已停止(不仅仅是MovieClip):
public function stopAllSounds(sp:Sprite):void
{
var mute:SoundTransform = new SoundTransform(0.0);
sp.soundTransform = mute;
var mc : MovieClip = sp as MovieClip;
if(mc != null)
{
for (var i:int = 0; i < mc.numChildren; ++i)
{
var m:DisplayObject = mc.getChildAt(i);
if(m != null) stopAllSounds(m);
}
}
}