SWF SecurityError:错误#2000:没有活动的安全上下文

时间:2011-02-21 12:12:24

标签: security flash

您好 我有一个工作得很好的flash图库,直到几天它停止加载图像。调试器抛出此错误:

SecurityError: Error #2000: No active security context.

有人可以解释可能的原因吗?

6 个答案:

答案 0 :(得分:4)

在处理路径位于外部XML文件中的图像时,我遇到了这个问题。所以...我加载XML得到它的路径,但后来我遇到的问题是我加载了30多个图像,错误只弹出了6次所以..我不知道哪个文件位置哪里不好。

如果你想要闪光灯输出的信息不仅仅是:

SecurityError: Error #2000: No active security context.

将此事件侦听器添加到Loader:

loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

最后这个功能:

protected function ioErrorHandler(e:IOErrorEvent):void{
    trace(e.text);
}

有了这个,您的安全错误将转换为 URL Not Found 错误,并提供您提供的文件位置。掌握了这些信息后,您可以更轻松地调试问题。

Error #2035: URL Not Found. URL: file:////Volumes/Macintosh%20HD/Users/cleanshooter/Documents/Website%20/here/there/everywhere/30805/filename.jpg

答案 1 :(得分:3)

之前我遇到过这个问题,最后的结论与错误的图片路径或名称相关

答案 2 :(得分:2)

您的图片扩展程序是否发生了变化,可能是从.jpg到.JPG等等?

通常,如果外部媒体出现问题,则会调用此方法。这是一个解决方法,但我通常尝试解决而不是让它消失。

setTimeout( function():void{fileReference.load();}, 1);

希望这有帮助。

答案 3 :(得分:1)

我遇到了这个问题并使用了上面的setTimeout示例,但目的略有不同。我正在调用一个访问Twitter的PHP脚本,并在Flash调试播放器中遇到了同样的安全问题。我只想添加上面构建的示例,以展示如何使用URLLoader和fileReference的“替代方法”。

var myXMLLoader:URLLoader = new URLLoader(); 

var urlStr:String = "http://www.yourdomain.com/php/twitter.php"; 
var myVariables:URLVariables = new URLVariables();
myVariables.twitterID = "yourtwitterID";

var myURLRequest:URLRequest = new URLRequest(urlStr)
myURLRequest.data = myVariables;

setTimeout(function():void {  myXMLLoader.load( myURLRequest ); }, 1);

myXMLLoader.addEventListener(Event.COMPLETE, onXMLLoadHandler);

答案 4 :(得分:1)

回应逆风:


在AS3中,您需要导入flash.utils.setTimeout。 setTimeout的语法是setTimeout(A, B, ...rest);

其中B是事后调用的函数, A是以ms为单位的延迟(例如1000秒) 和C是您需要为函数提供的任意数量的参数,用逗号分隔。

E.g。

import flash.utils.setTimeout;
// package, etc
//main function
setTimeout(respond, 500, true, false);
private function respond(A : Boolean, B : Boolean) : void {
   var result : Boolean = A == B;
   trace(result);
}

答案 5 :(得分:1)

您需要处理错误:

loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPError);
protected function onHTTPError(e:HTTPStatusEvent):void{
     trace("HTTPError"+e.status);
}

这样它就能处理错误并且工作正常。