我尝试在每个循环中添加一个MovieClip。
但我的脚本会覆盖除最后一个MC之外的所有MC。
我必须使用AS2
var myXML:XML = new XML();
myXML.ignoreWhite=true;
myXML.load("config.xml");
myXML.onLoad = function(success){
if (success){
var images = myXML.firstChild.childNodes;
for (i = 0; i < images.length; i++) {
var imageNumber = i+1;
var imageValue = images[i].firstChild.nodeValue;
var imageName = "image"+imageNumber;
trace(imageName);
_root.createEmptyMovieClip(imageName, this.getNextHighestDepth());
trace(imageNumber+": "+imageName + i);
imageName.loadMovie(imageValue);
imageName.width=500;
imageName.height=500;
_root.imageName.loadMovie(imageValue);
} // for loop
} // if success
trace("________________");
trace("1: "+image1);
trace("2: "+image2);
trace("3: "+image3);
}
如果我跟踪循环中的MC,它可以工作。 MC正在舞台上。 但如果我在循环外跟踪剪辑,则只有最后一个MC在舞台上。所有其他都未定义。
答案 0 :(得分:0)
我猜测陷阱是在onLoad函数中使用“this”。如果你尝试在加载器中跟踪“this”,你会发现它不会是你所期望的。加载器的行为与框架上的常规代码不同。
我认为错误发生在这里:
_root.createEmptyMovieClip(imageName, this.getNextHighestDepth());
其中this.getNextHighestDepth()
为您提供恒定的高度,因为在这种情况下,“this”始终引用相同的对象,并且新的动画片段将继续替换相同动画片段高度上的旧动画片段。请改用_root.getNextHighestDepth()
。
如果你真的想在onLoad函数中使用'this',那么将它分配给同一帧上的某个变量但不在onLoad事件中。例如:
handle=this;
myXML.onLoad = function(success){
trace(handle); //what you expect
trace(this); //not what you expect
}