AS3。 SecurityError:只需加载外部jpg时出现错误#2000

时间:2011-07-08 10:02:44

标签: flash actionscript-3 security

当我尝试使用Loader对象在同一文件夹中加载外部图像时,收到错误SecurityError: Error #2000: No active security context
我的代码是:

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");
}

为什么不起作用?

6 个答案:

答案 0 :(得分:3)

尝试将您的来电更改为加载:

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”或类似名称。

答案 1 :(得分: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 :(得分:0)

实际上它对我有用。我在第一行只收到警告。

你得到了:

var urlImg = String("img.jpg")

但应该替换为:

var urlImg:String = "img.jpg";

还要确保该文件与您的SWF位于同一目录中。

答案 3 :(得分: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);
}

工作正常。

我认为网址位置可能有误。并使用IOErrorEvent类并找出错误。

答案 4 :(得分:0)

假设您发布的代码不是您实际使用的代码 我遇到过这个问题,并注意到在分配源的同一行上连接URL的错误。

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

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

答案 5 :(得分:0)

另外请务必注意您的寻址规则。在HTML代码中工作的地址可能无法在actionsrcipt中工作。特别是在子文件夹方面。出于某种原因,这通常被报告为安全错误而不是URL未找到错误。