Остановка звука временной шкалы на загруженном SWF - PullRequest
1 голос
/ 18 ноября 2011

Я работаю над 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 голосов
/ 19 ноября 2011

Редактирование ответа Джеймса, чтобы убедиться, что все действительно остановлено (не только MovieClips):

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);
        }
    }
}
0 голосов
/ 18 ноября 2011

Вот небольшая рекурсивная функция, которая заглушит все аудио в видеоклипе. Если вы используете звуки временной шкалы, это должно их заткнуть.

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);
    }
}
...