在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();
}
答案 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()方法从每个循环中的数组中弹出最新的推送对象。如果您正在使用数组,那么数组有许多功能,如shift
,pop
,splice(i,1)。等...
我认为每个都是最好的 ..