在加载的swf上停止时间轴声音

时间:2011-11-18 11:52:57

标签: actionscript-3 timeline audio

我正在使用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方法 是否存在解决此问题的方法?

2 个答案:

答案 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);
        }
    }
}
相关问题