As3 загрузить, играть и отключить внешний SWF - PullRequest
2 голосов
/ 16 августа 2010

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

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 не отображается.Итак, мои вопросы:

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

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

1 Ответ

4 голосов
/ 16 августа 2010

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

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;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...