2

デバッグできるように、外部 SWF を読み込もうとしています。SWF ソースは管理していませんが、ホストされているドメインは管理しています。

これが私のコードです:

import flash.system.Security;
Security.allowDomain("*");

var swf = ["http://rcnhca.org.uk/wp-content/plugins/assessment-quiz/quiz.swf", "quiz_content/data.swf"]

var loadListener:Object = new Object();
loadListener.onLoadComplete = function(target_mc:MovieClip, httpStatus:Number):Void {
    trace(">> loadListener.onLoadComplete()");
    trace(">> httpStatus: " + httpStatus);
}

var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(loadListener);

var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mcLoader.loadClip(swf[0], mc);

ただし、これにより、次のエラーの多くが返されます。

SecurityDomain 'http://rcnhca.org.uk/wp-content/plugins/assessment-quiz/quiz.swf' tried to access incompatible context 'file:///G|/Lifelong%20Learning/Active%20work/Sites/rcnhca/wp%2Dcontent/plugins/assessment%2Dquiz/as2debug.swf'

次のように、ドメインのルートに crossdomain.xml ファイルを設定しました。

<?xml version="1.0" ?>
<cross-domain-policy>
  <allow-access-from domain="*"/>
  <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

(ここで見られます: http://rcnhca.org.uk/crossdomain.xml )

奇妙なことに、SWF はロードされますが、[デバッグ] -> [変数のリスト] を試みるか、デバッグ ペインで開くと、プログラム全体がクラッシュします。

4

1 に答える 1

0

ポリシー ファイルを実際にロードするためのコードが欠落しているようです (単にそこにあるだけでは十分ではありません)。

Security.loadPolicyFile('your_domain/crossdomain.xml');

allowDomain('*');(そして、ロード元の他のドメインについては、すべてが機能するようになったら、呼び出しをより具体的に修正しますが、今のところは問題ありません。)

アプリケーションの開始時に必ずこれを行ってください - 私は長年にわたってこれに非常に多くの頭痛の種を抱えてきました。

お役に立てれば。

于 2013-03-29T12:02:17.843 に答える