2012-02-28 11 views
0

ABという2つのアプリケーション(モジュールではなく、2つの独立したアプリケーション)があります。両方ともパーズリーで管理されており、SWFLoaderを使用してABを埋め込みたいと思っています(ただし、パースレイを使用してこれらのアプリケーションに「接続」したくないということを強調します)。parsleyとswfloader:有名なドメインの伝播

<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にコードを埋め込むペーストをコピーするとき、パセリはこの有名なエラーがスローされます。

コードを埋め込む含むビューは、構成されたパセリ(とdoesnのされていない場合でもReferenceError: Specified ApplicationDomain does not contain the class _B_mx_managers_SystemManager

タグは<Configure/>です)。

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

これはどうしてこのエラーが発生するのですか(組み込みアプリケーションでは、パーズリーはそれに気を付けるべきではありません)、どうすれば私のchildDomainを正しく使用するようにパースリーに伝えることができますか?

+0

進歩しましたか?私は同じ問題を抱えていますが、まだ解決策はありません。 – robmcm

答えて

1

問題は、コンテキストがあなたのサブアプリケーションは、イベントがアップバブルまだすることができ、別のアプリケーションドメインであるにもかかわらずなど

性質を注入するためにそれらを使用できるように、パセリが表示リストアップイベントをバブリングされていることです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

・ホープ、このことができます。

0

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

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