FlexでのModule
例によって、画面数が多かったりするとModuleに分けたりするわけなんですが、
・MainApp
・ModuleA
→画面A、画面Bを含む
MainAppで、ModuleAをロード、ロードしたModuleAから画面Aを生成。生成した画面をMainAppにAddElememt。
これがしたくて色々やってみたんですが、結果うまくいきませんでした。
なんというか、複雑なコンポーネントを使用するとダメですね。
SDK4.6です。
ModuleA
public class ModuleA extends Module { public function MasterModule() { super(); } public function createViewA():ViewA{ return new ViewA(); } public function createViewB():Class{ return ViewB; } }
画面のインスタンスを返すパターンと、クラスを返すパターンでやってみました。
Viewが単純な場合(ボタンとかしかない)、とりあえず動きます。
ViewにDataGridを含んでる場合、
mxのDataGridだと、
「#1007: コンストラクター以外にインスタンス化が試行されました」
sparkのDataGridだと、
「スキンが見つかりません」
MainApp側は、sparkのModuleLoaderとmxのModuleManager両方で試しましたが、
結果変わらず。
ちなみにMainApp側で、事前にDataGridを配置しておくと、うまくいきます。mxでもsparkでも。
あと、
画面AをModule化すると、うまくいきます。mxでもsparkでも。
http://livedocs.adobe.com/flex/3_jp/html/help.html?content=modular_3.html
Flex3ですが、Moduleは、フレームワークを含んだ場合、ASダメなんですかね。
SWFLoaderでやってみても結果変わらずでした。
FlexのModuleは、spark,mxの関係から色々難儀する事が多いらしく、
mxだけ使いましょうとかメモリリーク出るとか、あんまりいい話を聞きませんね。
まだ調べが足りないので、とりあえずメモです。もうちょっと調べよう。