0


1

外部のswfコンテンツをadobe airアプリケーションにロードしています。 コンテンツはますます多くの第三者によって提供されています。

サードパーティのコンテンツなので、別のセキュリティドメイン(trustContent = false)と兄弟アプリドメイン(loadForCompatibility = true)に読み込まれます。 これはLoaderクラスを使って行っています。

swfを外部コンテンツとして使用する際に問題を引き起こす可能性のある機能/オプション/アプローチは何ですか?

アプリドメイン/セキュリティドメインがロードされた場所に関係なく(およびLoaderとSWFLoaderの両方でも発生する)コンテンツに関する問題がすでに再現されているため、私はあらゆる種類の問題に興味があります。

特にメインアプリから適用できるものに関しては、この問題に対するあらゆる回避策が高く評価されています。

2 Answer


1


大きな厄介な問題(そして私たちがたくさん対処したことがある!)は、外部のSWFが単純に直接信頼できないという事実です。 今まで これにより、両者とベースのAIRアプリケーションとの間の通信が困難になります。

URLLoaderを介してSWFのデータをロードし、それからbytearrayを取り出してLoaderに送り込むことに基づく、これに関するハッキングがあります。 しかし、私はハックがAIR 1.5.1で殺されたと思います。

そうは言っても、Adobeがサンドボックスブリッジと呼ぶものを通じて、AIRアプリケーションとロードされたSWFとの間で通信することが可能です。 しかし、サンドボックスブリッジの設定は非常に面倒であり、複雑なデータ(オブジェクト、配列と同じくらい単純なものも)はブリッジの反対側にある一般的なオブジェクトに変換され、元の形式に戻すことはできません。

ブリッジを使用する必要がある最近のプロジェクトでは、ブリッジの両側で使用するAIRBridgeという特殊クラスを作成しました。これにより、すべてを適切に設定できます。 興味のある方は、Google Codeプロジェクト Automata-Toolsから現在のソースを入手することができます。


0


私達が既に述べたもの:

  • 外部swfステージ外のコンテンツはアプリケーションに表示され、表示されるサイズを設定するときにはオフステージ要素が考慮されます。 *回避策:*外部コンテンツが隠されるようにメインアプリケーションにマスクを追加してください。 .content.width / height(offstage要素でいっぱい)と.content.loaderInfo.width / height(元のステージサイズ)を使用して、元のステージが表示領域と一致するようにコンテンツを拡大縮小する量を計算します。