2


1

as3外部SWFのロード、再生、ミュート

私はソースを持っていないファイルを持っています-不快なサウンドイントロを備えたフラッシュヘッダーで、すべてのサウンドをミュートする必要があります。 ソースがなければ、私ができることは限られています。 swfを読み込んでミュートする(FlashDevelopでビルドする)ために使用しているas3コードがいくつかあります。 問題のコードは次のとおりです。

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 Answer


4


これをデバッグプレーヤーで実行していますか? コードを見ると、次の行に少なくともエラーがスローされているようです:

holder.addChild(mLoader);

`holder`はその時点で初期化されていないようです。 多分あなたのコードを壊すエラーが表示されていないかもしれません…​ サウンドをミュートするためのコードは正しく見えます(試していませんが)。 コンテンツそのものではなく、「ホルダー」に適用することもできます。そうしないと、ヘッダーswfが部分的にロードされ、完全なハンドラーが呼び出される前にサウンドの再生が開始される可能性があります。

また、http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/media/SoundMixer.html [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;

もう必要ないので、完全なハンドラーを削除しました。