好了,现在解释我的问题可能最简单了,我能够写出需要加载到舞台上动态文本字段的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>
非常感谢
// UPDATE
好的,当我直接加载xml:
时,这个场景现在可以正常工作了 var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();
xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
xmlLoader.load(new URLRequest("testxml.xml"));
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();
trace("c1"+c1+"c2"+c2+"c3"+c3); // traces my swf files
然后,附加到按钮的代码成功加载文件:
var swf:MovieClip;
var loader:Loader = new Loader();
var defaultSWF:URLRequest = new URLRequest(c1);
所以我现在要做的就是能够实现相同的功能,但是像以前一样用loadvars加载xml,从我的跟踪看来似乎有一个范围问题,但我不知道为什么“ c1“可以像上面那样引用..?
感谢
答案 0 :(得分:0)
您并未真正展示相关代码的一部分。在这里,我们看到您从flashvars获取XML URL并将XML数据分配给数组。
对c1,c2&amp;的分配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 ); }
答案 1 :(得分:0)
尝试使用trace(xmlData)来确保实际上已加载XML。
您的代码是否会产生任何错误?