2010-10-13 66 views
0

我正在開發AIR應用程序。在主應用程序中,我有一個模塊加載器'mainModuleLoader'。我正在使用<mx:Module>標記將模塊創建爲單獨的mxml文件。我使用actionscript動態地在mainModuleLoader中加載這樣一個模塊。一切正常。在flex中卸載模塊事件處理

對於我創建爲mxml文件的模塊,我想知道如何添加卸載事件處理程序。因此,無論何時調用mainModuleLoader.unload(),都會從module.mxml中觸發卸載事件處理程序。我嘗試了以下方法,但沒有取得任何成功

<mx:Module creatingComplete="init()" unload="unloadHandler()"/> 
<mx:Module creatingComplete="init()" remove="unloadHandler()"/> 

上面第二條語句的問題是,即使在模塊內部刪除了某個子項,它也會觸發unloadHandler。我還嘗試在動作腳本中添加以下內容。

private function init() 
{ 
    this.addEventListener(ModuleEvent.UNLOAD, unloadHandler); 
} 

但是,它不會觸發卸載模塊。請讓我知道我是否在某處出錯或者是否有其他方法來附加事件處理程序。 謝謝!

回答

1

您是部分使用remove有辦法......只是檢查event.target是模塊做你的工作之前,那麼他會忽略其他的。

+0

謝謝Gregor!這解決了我的問題。 :)在刪除處理程序我只是使用if(!(evt.target是myModule))返回; – Goje87 2010-10-22 10:39:27

0

我認爲你必須處理unload事件您mainModuleLoader的:

<mx:ModuleLoader id="mainModuleLoader" unload="unloadHandler()"/> 
+0

嘿,我不能這樣做,因爲不同的模塊會在內部定義不同的卸載函數。一些模塊也可能沒有卸載功能。所以,我認爲模塊更好地調用自己的卸載處理程序,如果它有一個。 – Goje87 2010-10-13 13:07:23

+0

@ Goje87,我找不到'Module'有'unload'事件。 – splash 2010-10-13 13:28:01