2013-02-27 39 views
2

我正在嘗試加載外部SWF,以便我可以調試它。我不控制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> 

(在這裏看到:​​)

奇怪的是,當我嘗試調試 - >列出變量或在調試窗格中打開它時,SWF加載會使整個程序崩潰。

+0

也許你應該改變這個問題的標題?聽起來像crossdomain.xml已經解決了沙盒違例異常,對嗎?您也可以指定使用哪個程序進行調試。最後,我不確定如果您沒有源代碼,您可以如何調試外部SWF中的代碼,但也許我從來沒有使用過您使用的程序: – 2013-02-27 16:37:12

+0

@SunilD。沒有跨域沒有做任何事情。我正在使用Flash IDE(CS5.5)。你可以調試外部的SWF,它在AS3中是半工作的,但它有更多的問題。 – 2013-02-27 16:44:32

+0

好吧,我不好,我沒有滾動閱讀異常的文字。這似乎是說網絡上的SWF試圖訪問您的G:驅動器上的調試SWF。我認爲這是相反的方式?您是否在Flash Player設置(「受信任的位置設置」)中嘗試過「保佑」G:驅動器上的目錄?起初這些問題總是令人困惑,也許我沒有幫助! – 2013-02-27 17:51:42

回答

0

好像你錯過了代碼實際加載的策略文件(簡單地說是沒有足夠的):

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

(和任何其他領域,你是從,我加載'd也會修改你的allowDomain('*');的呼叫,一旦它的所有工作都變得更加具體,但現在就可以了。)

請確保你在應用程序開始時這樣做 - 我已經有過這麼多的頭痛了多少年,希望它會更適合你!

希望這會有所幫助。