添加同一对象的多个实例

时间:2019-01-10 16:04:25

标签: actionscript-3

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

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

1 个答案:

答案 0 :(得分:1)

您只会在代码的最顶部创建两个实例,Mc1Mc2中的一个。如果看不到单词new,则说明您未创建任何新实例。

您可能想做的是将Class存储在数组中,然后在while循环中创建该类的新实例。

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

    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循环以在数组中创建该类的新实例

    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++;    
    }