as3上的图像路径问题

时间:2012-11-05 23:49:37

标签: actionscript-3 flashdevelop

我正在尝试为我们的工作中的显示器创建一个屏幕保护程序。图像将被上传到外部服务器,从那个服务器我将拉动图像和xml文件。所以我的Flash应用程序和我的内容将在两个不同的地方。我收到错误“SecurityError:Error#2000:No active security context”。如何覆盖错误并将图像放到舞台上。

var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML;
var imageList:XMLList;
var imageLoader:Loader = new Loader();
var timer:Timer =new Timer(5000);
var imageIndex:uint = 0;
var child:DisplayObject;

var path:String="http://bgxserv03.mgmmirage.org/interactivemedia/mmhub01/test/mb/edit_bay/hr/infoscreen/servamb/";

xmlLoader.load(new URLRequest(path +"output.xml"));
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);
timer.addEventListener(TimerEvent.TIMER, tick);

function xmlLoaded(e:Event) {
     xmlData = new XML ( e.target.data);
     imageList = xmlData.image.name;
     timer.start();
     loadImage(imageList[0]);
}
 function imageLoaded(e:Event){
   if (child){
  myImageHolder.removeChild(child);
    }
 child = myImageHolder.addChild(imageLoader);
 Tweener.addTween(child, {alpha:0, time:1, delay:4});
 Tweener.addTween(child, {alpha:1, time:1, delay:5});
}

function loadImage(path:String){
imageLoader.load(new URLRequest( path +"photos/"));
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,imageLoaded);

}

任何帮助都会深深体会到。谢谢。

2 个答案:

答案 0 :(得分:0)

您需要将“Crossdomain.XML”放在服务器的根目录中。这将允许您的Flash文件从该服务器访问数据(在您的情况下为图像)。您可以从以下URL获取示例xml,为您的服务器自定义它: Sample CrossDomain.XML

答案 1 :(得分:0)

您缺少的可能是image / xml文件域中的crossdomain.xml策略文件。

使用this link创建一个crossdomain.xml文件,并将其添加到您的image / xml域的根目录,如下所示:“http://bgxserv03.mgmmirage.org/crossdomain.xml

URLLoader load()函数自动检查crossdomain.xml。 Loader类要求您指定您有兴趣检查发送到load()函数的LoaderContext对象中的策略文件。

在您的代码中,看起来错误应该来自URLLoader xml文件请求,因为它看起来不像您试图以任何方式访问图像的位图数据,这通常会抛出图像文件的安全性错误。如果图像加载部分出现问题,请完成以下说明,然后设置为:

在loadImage函数中,在load方法调用中添加一个LoaderContext参数:

function loadImage(path:String){
    var loaderContext:LoaderContext = new LoaderContext();
    loaderContext.checkPolicyFile = true;
    imageLoader.load(new URLRequest( path +"photos/"), loaderContext);
    imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,imageLoaded);
}

查看spec以获取有关如何使用Loader类的更多信息。

如果您遇到任何问题,this thread可能会有所帮助。