2010-08-16 4 views
2

У меня есть файл, к которому у меня нет источника - флеш-заголовок с неприятным звуковым вступлением, и мне нужно отключить все звуки. Без источника я ограничена тем, что могу сделать. У меня есть некоторый код as3, который я использую, чтобы попытаться загрузить swf и отключить звук (создание в FlashDevelop). Вот код, о котором идет речь:as3 load, play and mute external swf

package 
{ 
import flash.display.MovieClip; 
import flash.display.Sprite; 
import flash.events.Event; 
import flash.media.SoundTransform; 
import flash.net.URLRequest; 
import flash.display.Loader; 
import flash.media.SoundTransform; 

public class Main extends Sprite 
{ 
    private var mLoader:Loader; 
    private var mc1:MovieClip; 
    private var holder:Sprite; 
    private var mSound:SoundTransform; 

    public function Main():void 
    { 
     if (stage) init(); 
     else addEventListener(Event.ADDED_TO_STAGE, init); 
    } 

    private function init(e:Event = null):void 
    { 
     var mRequest:URLRequest = new URLRequest('header_v8.swf'); 
     mLoader = new Loader(); 
     mLoader.load(mRequest); 
     holder = new Sprite(); 
     holder.addChild(mLoader); 
     addChild(holder); 
     mSound = new SoundTransform(0); 
     holder.soundTransform = mSound; 

    } 

} 

}

Этот код выше по-прежнему играет звук и не отображается оригинал швейцарских франков. Итак, мои вопросы:

Как отключить внешний звук? Как бы я отображал внешний swf так же, как при просмотре непосредственно?

Любые предложения или указатели на полезные примеры/документация будет весьма признателен

ответ

4

Вы используете это в отладочном? Глядя на ваш код, кажется, он должен бросить по крайней мере, ошибка в этой строке:

holder.addChild(mLoader); 

кажется holder не инициализирован в этой точке. Возможно, есть ошибка, которую вы не видите, что ломает ваш код ... Код для отключения звука выглядит правильно (хотя я еще не пробовал). Возможно, вы можете применить его к holder вместо самого контента; в противном случае было бы возможно, что ваш заголовок swf частично загрузился и начал воспроизводить звуки перед вызовом вашего полного обработчика.

Также SoundMixer позволяет вам управлять глобальным томом (я упоминаю об этом, потому что, хотя это может быть не идеальный способ сделать это, возможно, он просто работает здесь).

Редактировать

Это эффективно заглушает загруженный SWF в быстром тесте я сделал:

var mRequest:URLRequest = new URLRequest('banner.swf'); 
var mLoader:Loader = new Loader(); 
mLoader.load(mRequest); 
var holder:Sprite = new Sprite(); 
holder.addChild(mLoader); 
addChild(holder); 
var t:SoundTransform = new SoundTransform(0); 
holder.soundTransform = t; 

Я удалил полный обработчик, так как он больше не нужен.

+0

Оглядываясь на него, переменная держателя на самом деле не нужна. после удаления его и просто используя addChild (mLoader); он загрузил swf, как ожидалось. Однако после просмотра в отладочном проигрывателе я узнал, что загруженный swf является AVM1Movie. Мне нужно будет сделать еще несколько исследований относительно правильной загрузки и отключения звука. – tomfmason

+0

В этом случае вы не можете напрямую общаться с ним. Но, может быть, (мне это никогда не приходилось делать) с владельцем «Sprite» и приглушением он мог работать, чтобы отключить загруженный swf. –

+0

Я попробовал это (см. Отредактированный OP), но он все еще воспроизводит звук из загруженного swf. Какие-либо предложения? – tomfmason