XML 加载的 AS3 问题

Posted

技术标签:

【中文标题】XML 加载的 AS3 问题【英文标题】:AS3 issue with XML load 【发布时间】:2014-01-29 07:28:40 【问题描述】:

我的 XML 文件在这里:http://gabriel-atanasov.eu/stylus/ask/all.xml

我的代码是:


var myXML:XMLList;
var myLoader:URLLoader = new URLLoader();

myLoader.load(new URLRequest("http://gabriel-atanasov.eu/stylus/ask/all.xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);

function processXML(e:Event):void 
    myXML = new XMLList(e.target.data);
    for (var i:int = 0; i<myXML.*.length(); i++) 
        trace("Folder number: " + (i+1) + ", Name is: " + myXML.folder[i].@name);

        for (var b:int = 0; i<myXML.folder[i].*.length(); i++) 
            trace("Item number: " + (b+1) + ", Type is: " + myXML.folder[b].*.@type);
        
    


“输出”中的结果应该类似于:

文件夹编号:1,名称为:PNG文件 商品编号:1,类型为:png 商品编号:2,类型为:png 商品编号:3,类型为:png 商品编号:4,类型为:png 商品编号:5,类型为:png 商品编号:6,类型为:png 商品编号:7,类型为:png 商品编号:8,类型为:png 商品编号:9,类型为:png 文件夹编号:2,名称为:GIF文件 商品编号:1,类型为:gif 商品编号:2,类型为:gif 商品编号:3,类型为:gif 商品编号:4,类型为:gif 商品编号:5,类型为:gif 商品编号:6,类型为:gif 商品编号:7,类型为:gif 商品编号:8,类型为:gif 商品编号:9,类型为:gif 文件夹编号:3,名称为:SWF 文件 商品编号:1,类型为:swf 货号:2,类型为:swf 商品编号:3,类型为:swf 商品编号:4,类型为:swf 商品编号:5,类型为:swf 商品编号:6,类型为:swf 商品编号:7,类型为:swf 商品编号:8,类型为:swf 商品编号:9,类型为:swf

【问题讨论】:

for (var i:int = 0; i &lt; 3; i++) MovieClip_name = "folder_" + (i +1); var MovieClip_name:MovieClip = new addFolder_mc(); addChild (MovieClip_name); 这段代码的问题在哪里以及如何解决? 我在寻找更多关于问题的书面描述的内容,而不是代码,但似乎 fsbmain 无论如何都发现了您的问题。 我解决了 XML 文件的问题,但我还有另一个问题。我可以驱动我的代码,我的目标是让一个变量更改我的名字并制作一个新的电影剪辑,它是和代码 (puu.sh/6M4Jc.png) 和 addFolder_mc 上的 (http://puu.sh/6M4QY.png ),你能帮我我需要紧急吗? 如果您有其他问题,请提出新问题。您可以随时提供指向此问题的链接以获取上下文。 我知道,但我可以在 20 分钟后。我发布但不知情地删除。 【参考方案1】:

您的错误是在第二个for loop 中使用了变量i 而不是b。我还在您的代码中进行了一些样式和性能更改:

    function processXML(e:Event):void 
    
        var myXML:XML = new XML(e.target.data);
        var folders:XMLList = myXML.folder;
        var len:int = folders.length();
        var folder:XML, files:XMLList, file:XML, len2:int;

        for (var i:int = 0; i < len; i++) 
        
            folder = folders[i];
            trace("Folder number: " + (i+1) + ", Name is: " + folder.@name[0]);

            files = folder.*;
            len2 = files.length();
            for (var b:int = 0; b<len2; b++) 
            
                file = files[b];
                trace("Item number: " + (b+1) + ", Type is: " + file.@type[0]);
            
        
    

输出:

Folder number: 1, Name is: PNG files
Item number: 1, Type is: png
Item number: 2, Type is: png
Item number: 3, Type is: png
Item number: 4, Type is: png
Item number: 5, Type is: png
Item number: 6, Type is: png
Item number: 7, Type is: png
Item number: 8, Type is: png
Item number: 9, Type is: png
Folder number: 2, Name is: GIF files
Item number: 1, Type is: gif
Item number: 2, Type is: gif
Item number: 3, Type is: gif
Item number: 4, Type is: gif
Item number: 5, Type is: gif
Item number: 6, Type is: gif
Item number: 7, Type is: gif
Item number: 8, Type is: gif
Item number: 9, Type is: gif
Folder number: 3, Name is: SWF files
Item number: 1, Type is: swf
Item number: 2, Type is: swf
Item number: 3, Type is: swf
Item number: 4, Type is: swf
Item number: 5, Type is: swf
Item number: 6, Type is: swf
Item number: 7, Type is: swf
Item number: 8, Type is: swf
Item number: 9, Type is: swf

【讨论】:

以上是关于XML 加载的 AS3 问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 as3 加载 XML 文件

AS3 - 通过拖放加载不同的 XML 文件?

AS3 使用Loader 加载问题

Flash AS3 加载文件 xml

ActionScript 3 AS3:XML加载

ActionScript 3 AS3:加载XML