1

複雑なアプリケーションがあります。すべてのライブラリにFlex4.1RSLとカスタムRSLを使用しています(15個のカスタムSWCがあります-Flex Library Project)

必要な最小限のRSLでメインアプリケーションをロードしてから、ユーザーがアプリの最初の部分を操作している間に、バックグラウンドで他のすべてのRSLを使用してFlexModuleをロードしたいと思います。

メインアプリには3つのSWCが必要であり、モジュールには残りのSWCが必要です(12)。

すべてのRSLが(RSLとして)リンクされているApplication.mxmlとModule.mxmlを持つFlashBuilderApllicationプロジェクトが1つある場合

これを解決するにはどうすればよいですか。RSLはモジュールとともに子アプリケーションドメインにロードされますか?

現在使用しているもの:

info = ModuleManager.getModule(URL);
info.load(new ApplicationDomain(ApplicationDomain.currentDomain));

...したがって、新しいAppドメインにロードする必要がありますが、RSLはすでに親ドメインにプリロードされています!

モジュールで静的フィールド/シングルトンを使用しているので、それ以上ロードできません。

モジュールとそのRSLを子アプリドメインにロードできれば、クラス定義が分離され、それぞれが独自の静的フィールドを持つ2つのモジュールを使用できます。

4

2 に答える 2

1

OSGIに着想を得たPotomacモジュール性フレームワークを試してみませんか?これにより、アセットのロードをより正確に制御できます。リファクタリングが必要になる場合がありますが、アプリケーションに15の異なるコンパイル済みアセットがあるという事実は、すでにモジュラーラインに沿って考えていることを示しています。

編集:

Potomacはすべての「バンドル」をアプリケーションドメインにロードしますが、アセットをオンデマンドでロードするという問題は解決します。あなたの問題のどの部分が最も重要な問題なのかわかりません。また、要件に適合する場合と適合しない場合があるサブアプリケーションを調べることもできます。

于 2011-05-10T12:43:25.700 に答える
1

ソリューションはFlex4.5に付属しています-RSLの概要

プレースホルダーRSLの使用

Flexを使用してアプリケーションをコンパイルする場合、デフォルトの動作は、フレームワーク(またはデフォルト)のRSLに対してアプリケーションをコンパイルすることです。アプリケーションが実行されると、実際に使用するフレームワークRSLのみが読み込まれ、残りのフレームワークRSLのプレースホルダーが作成されます。アプリケーションが、プレースホルダーが存在するフレームワークRSLの1つを必要とするモジュールまたはサブアプリケーションをロードすると、モジュールまたはサブアプリケーションはそのRSLをメインアプリケーションにロードします。

AdobeFlex4.5を参照-RSLの概要@help.adobe.com

于 2011-05-10T14:50:14.523 に答える