flex:使用Interface从模块调用父方法

时间:2011-02-22 07:42:09

标签: flex module

我使用this guide将数据传递给模块“使用接口进行模块通信”。为了获得子模块实例,他们已经完成了这个

var ichild:* = mod.child as IModuleInterface; (mod = moduleLoader)

如何在模块中获取父应用程序的实例? 如何在模块内调用父方法?

1 个答案:

答案 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。注意类型转换和未显示属性的错误。