1

swf を使用して要素を読み込み、読み込まれた swf にプロパティを追加するアプリを開発しています。SWFLoader を使用してムービーをロードし、COMPLETE イベントで、ロードされた MovieClip を特定のフレームに移動して、その DisplayList を一覧表示します。リストをすぐにトラバースすると、メモがロードされていることがわかりました。多分それはコードでよりきれいです:

loader.addEventListener(Event.COMPLETE, function(evt:Event):void{
    var mc:MovieClip = MovieClip(loader.content);
    mc.gotoAndStop(frameNumber);
    for(i = 0; i < mc.numChildren; i++){
         trace(mc.getChildAt(i));
    }
}

ロードされた swf からいくつかの子を逃し、場合によっては null 値を取得します。ここで、表示リストを一覧表示する前に 250 ミリ秒待機する Timer() を追加しましたが、これは非常に遅く、非効率的です。

もう 1 つの奇妙な動作は、前のスニペットでは、Timer が配置されていても、一部の MovieClip を取得できないことです。次のように、ロードされたswfに関数を挿入する必要がありました。

function getItems():Array{
    var res:Array = [];
    for(var i:uint = 0; i < this.numChildren; i++){
        res.push(this.getChildAt(i));
    }
    return res;
}

子の正しいリストを取得します。

どうもありがとう

4

1 に答える 1

0

Loaderクラスを使用していますか。使用している場合は、ローダー オブジェクト自体ではなく、イベント リスナーをローダーのcontentLoaderInfoプロパティに追加する必要があります。これは非常によくある間違いです。

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(evt:Event):void{
    var mc:MovieClip = MovieClip(loader.content);
    mc.gotoAndStop(frameNumber);
    for(i = 0; i < mc.numChildren; i++){
         trace(mc.getChildAt(i));
    }
}

HTH

于 2010-10-03T15:38:43.427 に答える