リモートのswfファイルをロードするAir for Android(AS3)アプリケーションを構築しています(サーバーにあります)
アイデアは、apk を可能な限りストリーム ラインに保ち、迅速な展開を可能にすることです (Google Play ではなく非公開で展開されます)。
- APKはローダーと呼ばれます
- リモート swf は Player と呼ばれます。
現在、Loader を起動すると、Player がこのエラーをスローしています。
SecurityError: エラー #2070: セキュリティ サンドボックス違反: 呼び出し元http://sub.mydomain.com/remote/player.swfは app:/Loader.swf が所有する Stage にアクセスできません。
Player が Loader ステージを呼び出そうとしないため、これは奇妙です。Player に「_stage」と呼ばれる新しいステージを作成するように指示しました。コードは次のとおりです。
var playerContainer:MovieClip = new MovieClip();
var _stage:Stage = playerContainer.stage;
使用:
_stage.stageWidth
ステージ幅にアクセスします。
Player がステージ プロパティにアクセスしようとしていると Loader が判断する理由がわかりません。
さまざまなフォーラムの投稿で言及されている次のコードを試してみましたが、セキュリティ ドメインの問題を軽減するものはないようです。
ローダーで
try {Security.allowDomain("*");}catch (e) { };
プレイヤー内
Security.allowDomain("http://sub.mydomain.com");
また、Player の init() 関数についても
addEventListener(Event.ADDED_TO_STAGE, displayLogin);
これらはどちらも役に立ちません。
私は完全に途方に暮れています。Loader を取得して Player がそのステージ プロパティにアクセスできるようにする方法については、私の頭の上にあります。
編集-両方のswfファイルがサーバー上にあり、Androidアプリを使用するのではなく、ブラウザーを介してローダーにアクセスすると、正常にロードされます。間違いなくクロススクリプティングの問題ですが、それを許可する適切なコードがすべて揃っているように見えますか?