0

2 つのアプリケーションがあります (モジュールではなく、2 つの独立したアプリケーションです!):AB. Bどちらも Parsley で管理されており、SWFLoaderを使用して埋め込みたいと考えAています (ただし、Parsley を使用してこれらのアプリケーションを「接続」したくないことを強調します。通常の Flash 埋め込みを行いたいだけです)。

それは埋め込みコードです:

<fx:Script>
<![CDATA[
    [Bindable]
    private var childDomain:ApplicationDomain =
        new ApplicationDomain(ApplicationDomain.currentDomain);

]]>
</fx:Script>

<mx:SWFLoader width="100%" height="100%" source="B.swf" 
    complete="initNestedAppProps(SWFLoader(event.currentTarget).content);"
    loaderContext="{new LoaderContext(false, childDomain, SecurityDomain.currentDomain)}"/>         

Bパセリなしでダミーアプリに埋め込むと機能します。

ただし、その埋め込みコードをライブ アプリケーションにコピー アンド ペーストするとA、Parsley は次の有名なエラーをスローします。

ReferenceError: Specified ApplicationDomain does not contain the class _B_mx_managers_SystemManager

埋め込みコードを含むビューが Parsley で構成されていない (そして<Configure/>タグがない) 場合でも。

残念ながら、これを Parsley フォーラムに投稿することはできません。また、人々はアプリケーションの埋め込みをあまり頻繁に行っていないように見えるため、グーグルは役に立ちませんでした。

問題は、なぜこのエラーが発生するのか (Parsley は組み込みアプリケーションの内容を気にするべきではありませんか?)、どうすれば Parsley に my を適切に使用するように指示できるかということchildDomainです。

4

2 に答える 2

1

問題は、Parsley がイベントを表示リストにバブリングしているため、コンテキストがそれらを使用してプロパティなどを注入できることです。

サブアプリケーションが別のアプリケーション ドメインにあるという事実にもかかわらず、イベントは依然として swf ローダーの子から親などにバブルアップする可能性があります。

何が起こっているかというと、サブ アプリケーションがシェル (またはラッパー/ローダー アプリケーション) コンテキストによって処理されるイベントをバブリングしているということです。アプリケーション ドメイン。

解決策は、これらのイベントがシェル アプリケーションのパセリ コンテキストに到達するのを停止することです。これにはさまざまな方法があります。たとえば、イベントのリスナーを追加して、その伝播を停止するだけです。ただし、これはすべての Parsley イベントのリスナーを追加する必要があることを意味し、これは将来変更される可能性があります。より良い解決策は、渡された displayObjects に対して ViewAutowireMode.NEVER を返す autowireFilter を持つ新しいコンテキストを SWFLoader の親に作成することです。

このコンテキストは、それらがそれ以上泡立つのを止め、パセリがそれらに反映するのを止めるので、それらがアプリケーションドメインにないという問題を止めます.

参照: org.spicefactory.parsley.core.view.impl.DefaultViewAutowireFilter org.spicefactory.parsley.core.builder.impl.DefaultCompositeContextBuilder http://opensource.powerflasher.com/jira/browse/PSL-587

お役に立てれば。

于 2012-03-30T12:16:23.280 に答える
0

上記の答えは正しいです。

私たちの場合、フレックス モジュールを作成し、Parsley とうまく統合されているModuleLoader代わりにを使用することで問題を解決しました。SWFLoader

于 2012-04-03T09:24:40.797 に答える