親swfに2つの子swfがロードされています。各子 swf は、独自の XML ファイルをロードします。子 swfs をロードすると、XML ファイルがまだロードされていないため、null が返されます。greensock の LoaderMax を使用しています。とにかく、すべての子 XML がいつ読み込まれたかを親が知ることはできますか。
1 に答える
0
子が読み込まれるときに子をカウントするのではなく、子が XML の読み込みを完了したときにカウントしたいようです。最初に、次のような xml をロードするすべての子のクラスを作成することを検討してください。
package {
import flash.display.MovieClip;
public class ChildToLoad extends MovieClip{
public function ChildToLoad() {
// Load xml here, optionally use URLLoader or XMLLoader,
// but regardless of what you use, listen for when XML load
// is complete and handle it with the loadComplete() function
...
someXMLLoader.addEventListener(Event.COMPLETE, loadComplete);
...
}
private function loadComplete(evt:* = null)
{
var padre:MovieClip = parent as MovieClip;
padre.childLoaded(); // Call function of parent
}
}
}
次に、メインの swf (親) で次のようにします。
var child1:ChildToLoad = new ChildToLoad();
var child2:ChildToLoad = new ChildToLoad();
addChild(child1);
addChild(child2);
var loadedChildrenCount:int = 0;
function childLoaded() // Called by all children after they load XML
{
trace("childLoaded()");
loadedChildrenCount++;
if(loadedChildrenCount == 2)
{
trace("All children have loaded! Do Stuff!");
}
}
でも; あなたの質問を読みすぎると...
LoaderMax には、onChildComplete
使用できるハンドラがあります
ローダーの子 (または任意の子孫) の 1 つが正常にロードを終了するたびにディスパッチされる LoaderEvent.CHILD_COMPLETE イベントのハンドラー関数。onChildComplete 関数がタイプ LoaderEvent (com.greensock.events.LoaderEvent) の単一のパラメーターを受け入れることを確認してください。
次のようなものを試すことができます:
var childrenLoadedCount:int = 0;
var queue:LoaderMax = new LoaderMax({
onChildComplete:AChildWasLoaded,
TODO:AddYourOtherArgumentsHere
});
...
function AChildWasLoaded(evt:LoaderEvent)
{
childrenLoadedCount++;
if(childrenLoadedCount = 2)
{
// All children have loaded
}
}
于 2013-01-08T05:11:37.837 に答える