Это легко. Просто передайте любой экземпляр класса в вашем главном приложении модулю, какие методы вы хотите вызвать.
Ваш модуль:
<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. Будьте осторожны с ошибками приведения типов и несуществующими свойствами.