添加同一对象的多个实例 影片剪辑从第一个对象消失,因为实例名称为 总是一样的,有解决方案
var mc1:Mc1=new Mc1();
var mc2:Mc2=new Mc2();
var ar:Array=new Array();
function fun(){
var i = 0;
while (i < ar.length) {
ar[i].width=864;
ar[i].height=651;
ar[i].x=200;
ar[i].y=200;
ar[i].visible=false;
addChild(ar[i]);
i++;
}
TweenMax.staggerTo(ar,0, {visible:true},0.120);
}
button1.addEventListener(MouseEvent.CLICK,f1);
function f1(e:Event):void{
ar.push(mc1);//
}
button2.addEventListener(MouseEvent.CLICK,f2);
function f2(e:Event):void{
ar.push(mc2);
}
button3.addEventListener(MouseEvent.CLICK,f3);
function f3(e:Event):void{
ar.push(mc1);//
}
button4.addEventListener(MouseEvent.CLICK,f4);
function f4(e:Event):void{
fun();
}
答案 0 :(得分:1)
您只会在代码的最顶部创建两个实例,Mc1
和Mc2
中的一个。如果看不到单词new
,则说明您未创建任何新实例。
您可能想做的是将Class存储在数组中,然后在while循环中创建该类的新实例。
更改推送到数组的位置,以推送类名,而不是实例:
ar.push(Mc1); //instead of ar.push(mc1)
删除顶部的那些实例
//remove these two lines
var mc1:Mc1=new Mc1();
var mc2:Mc2=new Mc2();
更改while循环以在数组中创建该类的新实例
var obj:MovieClip; //create a var to store your Mc objects in the loop below
var i:int = 0;
while (i < ar.length) {
obj = new ar[i](); //this instantiates the class stored in the array at index i
obj.width=864;
obj.height=651;
obj.x=200;
obj.y=200;
obj.visible=false;
addChild(obj);
i++;
}