2010-10-13 55 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