3

在级别 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);

我会使用数组中的每个然后拼接吗?例如

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

2 回答 2

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 );
}
于 2012-12-28T12:11:11.353 回答
0

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

您可以使用 array.pop() 方法通过每次循环从数组中弹出最新推送的对象。如果您使用的是数组,那么数组有许多功能,例如shift, pop, splice(i,1)。ETC...

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

于 2012-12-28T11:55:18.140 回答