我使用this guide将数据传递给模块“使用接口进行模块通信”。为了获得子模块实例,他们已经完成了这个
var ichild:* = mod.child as IModuleInterface; (mod = moduleLoader)
如何在模块中获取父应用程序的实例? 如何在模块内调用父方法?
答案 0 :(得分:0)
这很容易。只需将主应用程序中的任何类实例传递给模块,即要调用哪些方法。
您的模块:
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script><![CDATA[
public var appInst : Object;
public function CallAlert() : void
{
if (appInst != null)
appInst.AppAlert("Hello from module");
}
]]></mx:Script>
<mx:Button click="CallAlert()" label="click"/>
</mx:Module>
您的主要申请:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script><![CDATA[
import mx.controls.Alert;
public function AppAlert(str : String) : void
{
Alert.show(str);
}
public function ready(evt : Event) : void
{
mod.child["appInst"] = this;
}
]]></mx:Script>
<mx:ModuleLoader
id="mod"
width="100%"
url="module.swf"
ready="ready(event)"/>
</mx:Application>
[]运算符是使用对象的属性和方法的另一种方法。我们这里不能使用mod.child.appInst
,因为mod.child
是DisplayObject,它没有这样的属性。但是我们的模块主类具有属性appInst
。这是使用界面的另一种方式。
您可以将任何变量或函数传递给模块应用程序。就是这样。
P.S。注意类型转换和未显示属性的错误。