AS3从父类中删除类中数组中的所有子项

时间:2012-12-28 11:43:29

标签: actionscript-3 oop actionscript

在1级课程(家长)中,我将公民作为单独的对象生成(c)从舞台左侧或右侧行走。所有这些都被添加到一个名为citizen的数组中:

if (citizens.length < 10)
        {
            // create citizen
            var c:Citizen = new Citizen(side,speed,yPos);
            addChildAt(c, 2);
            citizens.push(c);
        }

我想删除该类的每个实例,并删除该类中附加到它的事件侦听器:

this.addEventListener(Event.ENTER_FRAME,moveCitizen);

我会为数组中的每个接头使用a吗? E.G

for each (c in citizens) {
removeEventListener(Event.ENTER_FRAME,moveCitizen);
splice();
}

2 个答案:

答案 0 :(得分:1)

你可以做类似以下的事情:

// Creation
if (citizens.length < 10) {        
    // create citizen
    var c:Citizen = new Citizen( side, speed, yPos );
    addChildAt( c, 2 );
    citizens.push( c );
}

// Removal 
for( var i:int = 0; i < citizens.length; i++ ) {
    var c:Citizen = citizens[ i ].pop();
    removeChild( c )
    c.cleanUp();
}

// In Class Citizen
public function cleanUp():void {
    removeEventListener( Event.ENTER_FRAME, moveCitizen );
}

答案 1 :(得分:0)

@ user1878381如果您需要在每个对象中调用citizens,则必须在reset()类中创建一个方法。删除对象时,必须调用该对象的重置功能,通过删除所有eventlistner重置citizes并重置该对象中公民的所有属性。

您可以使用array.pop()方法从每个循环中的数组中弹出最新的推送对象。如果您正在使用数组,那么数组有许多功能,如shiftpop,splice(i,1)。等...

我认为每个都是最好的 ..