2011-07-08 62 views
3

當我嘗試使用Loader對象在同一文件夾中加載外部圖像時,收到錯誤SecurityError: Error #2000: No active security context
我的代碼是:AS3。 SecurityError:Error#2000 when simply load external jpg

var urlImg = String("img.jpg"); 
var imgLoader:Loader = new Loader(); 
var _lInfo:LoaderInfo = imgLoader.contentLoaderInfo; 
_lInfo.addEventListener(Event.COMPLETE, handleComplete); 
imgLoader.load(new URLRequest(urlImg)); 

function handleComplete(evt:Event):void{ 
    trace("handleComplete"); 
} 

爲什麼它不工作?

回答

0

其實它適用於我。我在第一行中只有一個警告。

你得到了:

var urlImg = String("img.jpg") 

但應及時更換:

var urlImg:String = "img.jpg"; 

另外,還要確保文件在同一目錄中,以便您的SWF。

1

發生某種類型的安全違規時會拋出SecurityError異常。安全性錯誤的

實例:

  • 未經授權的屬性訪問或方法調用通過安全沙箱邊界製成。
  • 嘗試訪問安全沙箱不允許的URL。
  • 試圖將套接字連接到未授權的端口號,例如,一個65535以上的端口。
  • 嘗試訪問用戶的相機或麥克風,並且訪問設備的請求被用戶拒絕。

來源:http://www.actionscripterrors.com/?p=409

你可以嘗試用這個代碼:

var loader:Loader = new Loader(); 
var context:LoaderContext = new LoaderContext(); 
context.checkPolicyFile = false; 

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); 
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError); 

var request:URLRequest = new URLRequest(imageUrl); 
loader.load(request, context); 
2

試着改變你的呼叫負載:

imgLoader.load(new URLRequest(urlImg)); 

要做到這一點,而不是:

var context:LoaderContext = new LoaderContext(); 
context.applicationDomain = ApplicationDomain.currentDomain; 

imgLoader.load(new URLRequest(urlImg), context); 

否則,您可以嘗試在使用mxmlc進行編譯時更改use-network屬性。在Flash Pro中,在發佈設置下,查找「本地播放安全性:」並在「僅訪問本地文件」或「僅限訪問網絡」之間切換。

另外,不要忘記驗證你的圖像是否在正確的文件夾中,並命名爲「img.jpg」而不是「image.jpg」或「img.JPG」或類似的名稱。

+0

是否區分大小寫? – midhunhk

+0

取決於swf運行的平臺。不傷害以驗證易於發現和糾正的潛在問題。 – Bakapii

0
var urlImg = String("img.jpg"); 
var imgLoader:Loader = new Loader(); 
var _lInfo:LoaderInfo = imgLoader.contentLoaderInfo; 
_lInfo.addEventListener(Event.COMPLETE, handleComplete); 
imgLoader.load(new URLRequest(urlImg)); 

function handleComplete(evt:Event):void { 
    trace("handleComplete"); 
    var mc:MovieClip = new MovieClip(); 
    addChild(mc); 
    mc.addChild(imgLoader.content); 
} 

其工作正常。

我認爲url位置可能是錯誤的。並使用IOErrorEvent類並找出錯誤。

0

假設您發佈的代碼不是您實際使用的代碼。
我遇到了這個問題,並注意到在分配源代碼的同一行上連接URL的錯誤。

// bad code 
imageObj.source = partialURL1 + partialURL2 + partialURL3; 

//good code 
var someURL:String = partialURL1 + partialURL2 + partialURL3 
imageObj.source = someURL; 
0

此外請務必注意您的尋址規則。在html代碼中工作的地址可能無法在actionsrcipt中使用。尤其是關於子文件夾的情況。出於某種原因,這通常會報告爲安全錯誤,而不是URL未找到錯誤。