flex: вызов родительского метода из модуля с использованием интерфейса - PullRequest
0 голосов
/ 22 февраля 2011

Я использую это руководство для передачи данных в модули "Использование интерфейсов для связи модулей". Для получения экземпляров дочернего модуля они сделали это

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

Что я должен сделать, чтобы получить экземпляр родительского приложения внутри модуля? Как я могу вызвать родительские методы внутри модулей?

1 Ответ

0 голосов
/ 23 февраля 2011

Это легко. Просто передайте любой экземпляр класса в вашем главном приложении модулю, какие методы вы хотите вызвать.

Ваш модуль:

<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. Будьте осторожны с ошибками приведения типов и несуществующими свойствами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...