我正在尝试在Actionscript中做一件最简单的事情,但代码似乎只是想使用XML的第三个节点。 这是XML代码:
<?xml version="1.0" encoding="utf-8"?>
<flags>
<flag>
<sigla>pt-br</sigla>
<png>brazil.png</png>
<nome>Portugues</nome>
</flag>
<flag>
<sigla>esp</sigla>
<png>spain.png</png>
<nome>Espanol</nome>
</flag>
<flag>
<sigla>en</sigla>
<png>usa.png</png>
<nome>English</nome>
</flag>
</flags>
这是AS2代码:
var flagsXML = new XML();
flagsXML.ignoreWhite = true;
_root.linkFlags = "";
_root.flagSpacing = 5;
flagsXML.onLoad = function(success:Boolean){
if(success){
flagsNode = flagsXML.firstChild;
flagsTotal = flagsNode.childNodes.length;
for(i=0;i<flagsTotal;i++){
//var flagItem = new MovieClip();
flagItem = flagsMc.attachMovie("idioma","idioma"+i,_root.getNextHighestDepth());
flagItem.png.loadMovie("img_idiomas/"+String(flagsNode.childNodes[i].childNodes[1].childNodes[0].nodeValue));
//loadMovie("img_idiomas/"+flagsNode.childNodes[i].childNodes[1].childNodes[0].nodeValue);
flagItem._x -= 16*(i+1);
trace("sigla"+i+": "+flagsNode.childNodes[i].childNodes[1].childNodes[0].nodeValue);
}
}
}
flagsXML.load("xml/flags.xml");
确定。在Trace命令中,他输出了png的名称,但它实际上只在最后'for'迭代中附加了movieClip。我试图调试电影,当i = 0或1时它甚至不附加电影。
啊,我仔细检查了images文件夹,文件名等等。
感谢您的帮助。
答案 0 :(得分:1)
刚发现你的问题,幸运的是它很小:)
flagItem = flagsMc.attachMovie("idioma","idioma"+i,_root.getNextHighestDepth());
应该是
flagItem = flagsMc.attachMovie("idioma","idioma"+i,flagsMc.getNextHighestDepth());
由于您没有将剪辑添加到_root,因此最高深度不会改变,因此每次迭代时,您都会覆盖相同深度的上一个剪辑。