最近用loader的時候就卡了好久 囧
後來發現只用
private function startForm(e:CloseEvent = null):void
{
this.initStage("form");
this.currentState = this.formState.name;
this.form.contentLoaderInfo.addEventListener(Event.COMPLETE, function (e:Event):void {
form.contentLoaderInfo.sharedEvents.dispatchEvent(new Event("startForm"));
});
}
form裡面是接不到startForm這個事件的
因為Flex有兩個Frame,第一個Frame只有systemManager,第二個Frame才有元件
而Event.COMPLETE的時候,完成的就只有systemManager,這時的loader.content就是systemManager
所以只有當systemManager送出FlexEvent.APPLICATION_COMPLETE的時,元件才算完全被載入
這時的loader.systemManager才會變成主程式
所以修改成這樣:
private function startForm(e:CloseEvent = null):void
{
this.initStage("form");
this.currentState = this.formState.name;
this.form.contentLoaderInfo.addEventListener(Event.COMPLETE, function (e:Event):void {
form.content.addEventListener(FlexEvent.APPLICATION_COMPLETE, function (e:FlexEvent):void {
form.contentLoaderInfo.sharedEvents.dispatchEvent(new Event("startForm"));
});
});
}
相關資料
一種Flex和as3代碼之間互相調用的方法
瞭解Flex程序的生命週期
沒有留言:
張貼留言