加载xml时actionscript 3中的访问/范围问题

加载xml时actionscript 3中的访问/范围问题,xml,actionscript-3,actionscript,scope,Xml,Actionscript 3,Actionscript,Scope,好的,现在可能最容易解释我的问题了,我可以将需要加载到舞台上的动态文本字段中的xml文件的名称写入,但是,在这之后,我似乎无法访问它并从中删除必要的数据,下面是我的代码: var tf:TextField = new TextField(); tf.autoSize=TextFieldAutoSize.LEFT; tf.border=true; addChild(tf); try { var keyStr:String; var valueStr:String; var paramObj:Ob

好的,现在可能最容易解释我的问题了,我可以将需要加载到舞台上的动态文本字段中的xml文件的名称写入,但是,在这之后,我似乎无法访问它并从中删除必要的数据,下面是我的代码:

var tf:TextField = new TextField();
tf.autoSize=TextFieldAutoSize.LEFT;
tf.border=true;
addChild(tf);

try {
var keyStr:String;
var valueStr:String;
var paramObj:Object=LoaderInfo(this.root.loaderInfo).parameters;
 for (keyStr in paramObj) {
 valueStr=String(paramObj[keyStr]);
 tf.appendText(valueStr + "\n");
}
} catch (error:Error) {
 tf.appendText("error");
}

// load and parse the xml
var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();
xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
xmlLoader.load(new URLRequest(valueStr));

function LoadXML(e:Event):void {
xmlData=new XML(e.target.data);
xmlData.ignoreWhite = true;
var items:XMLList = xmlData.resource;
var tarray:Array = new Array();

 for each (var resource:XML in items) {
  tarray.push(resource.@src);
 }

  c3 = tarray.pop();
  c2 = tarray.pop();
  c1 = tarray.pop();
我的xml看起来像这样,有人看到我做错了什么吗

 <?xml version="1.0" encoding="utf-8"?>
 <xml>
 <resource id="thing1" src="swf1.swf" />
 <resource id="thing2" src="swf2.swf" />
 <resource id="thing3" src="swf3.swf" />
 </xml>
然后,附加到按钮的代码将成功加载文件:

var swf:MovieClip;
var loader:Loader = new Loader();
var defaultSWF:URLRequest = new URLRequest(c1); 
因此,我现在想做的就是能够实现同样的目标,但是像以前一样使用loadvars加载xml,从我的跟踪来看,似乎存在范围问题,但我不确定为什么可以像上面那样引用“c1”


谢谢

您没有真正显示代码中相关的部分。这里我们看到您从flashvars获取XML url,并将XML数据分配给一个数组

分配给c1、c2和c3的任务看起来有点奇怪。为什么要使用pop()方法

如果tarray是一个图像url数组,为什么不使用tarray的数据从中加载图像呢

检查跟踪语句是否有错误

import flash.display.Loader; import flash.display.LoaderInfo; import flash.events.*; import flash.net.URLRequest; for each( var url:String in tarray ) { var loader:Loader = new Loader(); var info:LoaderInfo = loader.contentLoaderInfo; info.addEventListener(Event.COMPLETE , completeHandler ); info.addEventListener(IOErrorEvent.IO_ERROR , errorHandler ); loader.load(new URLRequest(url)); } function completeHandler(event:Event):void { trace( event ); } function errorHandler(event:IOErrorEvent):void { trace( event ); } 导入flash.display.Loader; 导入flash.display.LoaderInfo; 导入flash.events.*; 导入flash.net.URLRequest; 对于每个(变量url:tarray中的字符串) { 变量加载器:加载器=新加载器(); 变量信息:LoaderInfo=loader.contentLoaderInfo; info.addEventListener(Event.COMPLETE,completeHandler); info.addEventListener(IOErrorEvent.IO_ERROR,errorHandler); load(新的url请求(url)); } 函数completeHandler(事件:事件):void { 跟踪(事件); } 函数errorHandler(事件:IOErrorEvent):void { 跟踪(事件); } 尝试使用trace(xmlData)来确保实际加载了XML


您的代码是否产生任何错误?

谢谢,我的问题之一是我无法使用跟踪语句查找错误,因为提供swf文件本地化信息的xml是通过flashvars加载的,因此我需要在它的html页面中对其进行测试,但我会尝试复制上面的场景,谢谢您可以使用测试xml文件,直接用URLLoader加载,一切正常后再回到flashvars你是对的,我试图一次完成太多的工作,我会一步一步地做,然后看看如何进行,thanksHi,我确定xml已经加载了,但我现在要用我的精简方案重新测试 import flash.display.Loader; import flash.display.LoaderInfo; import flash.events.*; import flash.net.URLRequest; for each( var url:String in tarray ) { var loader:Loader = new Loader(); var info:LoaderInfo = loader.contentLoaderInfo; info.addEventListener(Event.COMPLETE , completeHandler ); info.addEventListener(IOErrorEvent.IO_ERROR , errorHandler ); loader.load(new URLRequest(url)); } function completeHandler(event:Event):void { trace( event ); } function errorHandler(event:IOErrorEvent):void { trace( event ); }