添加同一对象的多个实例

Adding multiple instances of the same object

添加同一对象的多个实例 影片剪辑从第一个对象中消失,因为实例名称是 总是一样有没有解决办法

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();
}

您只会在代码的最顶部创建两个实例,一个 Mc1 和一个 Mc2。如果您没有看到 new 一词,则说明您没有创建任何新实例。

您可能想要做的是将 Class 存储在数组中,然后在 while 循环中创建该 class.

的新实例
  1. 更改推送到数组的位置,以推送 class 名称,而不是实例:

    ar.push(Mc1);  //instead of ar.push(mc1)
    
  2. 删除顶部的那些实例

    //remove these two lines
    var mc1:Mc1=new Mc1();
    var mc2:Mc2=new Mc2();
    
  3. 更改您的 while 循环以在数组

    中创建 class 的新实例
    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++;    
    }