1
我有2個子swf被加載到父swf中。每個孩子swf加載它自己的XML文件。當我加載子swf時,我得到一個null,因爲他們還沒有加載他們的XML文件。我正在使用Greensock的LoaderMax。無論如何父母知道何時加載了所有子XML。LoaderMax在子swf
我有2個子swf被加載到父swf中。每個孩子swf加載它自己的XML文件。當我加載子swf時,我得到一個null,因爲他們還沒有加載他們的XML文件。我正在使用Greensock的LoaderMax。無論如何父母知道何時加載了所有子XML。LoaderMax在子swf
這聽起來像你不想在加載時計數孩子,而是當孩子們完成加載一些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
處理程序,您可以使用
爲它們 每次裝載機的孩子中的一個派出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
}
}