您好 我有一个工作得很好的flash图库,直到几天它停止加载图像。调试器抛出此错误:
SecurityError: Error #2000: No active security context.
有人可以解释可能的原因吗?
答案 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);
}
这样它就能处理错误并且工作正常。