Moduleについて。同じドメインにロードしたら getDefinitionByName() できるぉ。
public class Hoge extends Application {} と public class Fuga extends ModuleBase {} と public class Piyo {} 的な奴らがいるとする。mxmlc -link-report=report.xml -externs=Fuga,Piyo -o=Hoge.swf -- Hoge.mxml と mxmlc -load-externs=report.xml -includes=Piyo -o=Fuga.swf -- Fuga.as 的なことなんかをすると、Hoge.swf と Fuga.swf ができる。
Hoge.swf には Hoge しかいない。一方、Fuga.swf には Fuga と Piyo がいるわけだ。んで、Hoge で ModuleLoader を使って Fuga.swf をロードする。この際、ModuleLoader の applicationDomain プロパティに flash.system.ApplicationDomain.currentDomain を設定してやる。するってぇとモジュールのロード以降は Hoge で flash.utils.getDefinitionByName("Fuga") as Class とか flash.utils.getDefinitionByName("Piyo") as Class とかでクラスができるので new してやればインスタンスが作れる。必要に応じて IFuga とか IPiyo とかを親(Hoge)に含めてそれぞれのクラス(FugaやPiyo)で implements しよう。
- Adobe Flex 3 ヘルプ
- http://livedocs.adobe.com/flex/3_jp/html/help.html?content=modular_2.html#759700
- Flex 3 開発ガイド / 高度な Flex のプログラミング / モジュール化アプリケーションの作成 / モジュール化アプリケーションの概要
- Adobe Flex 3 ヘルプ
- http://livedocs.adobe.com/flex/3_jp/html/help.html?content=modular_5.html
- Flex 3 開発ガイド / 高度な Flex のプログラミング / モジュール化アプリケーションの作成 / モジュールのロードとアンロード
- ModuleManager クラスを使用したモジュールのロード
- IModuleInfo クラスの load() メソッドでは、オプションで引数として ApplicationDomain および SecurityDomain を指定できます。
- Adobe Flex 3 ヘルプ
- http://livedocs.adobe.com/flex/3_jp/html/help.html?content=18_Client_System_Environment_5.html#685129
- ActionScript 3.0 のプログラミング / クライアントのシステム環境 / ApplicationDomain クラスの使用