3

レベル 1 クラス (親) では、市民を個別のオブジェクト (c) として生成し、ステージを左または右から歩きます。これらはすべて市民と呼ばれる配列に追加されます。

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 then splice を使用しますか? 例えば

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すべてのオブジェクトで呼び出す必要がある場合は、クラスで1つのメソッドを作成する必要がありますreset()。オブジェクトを削除したら、そのオブジェクトのリセット関数を呼び出す必要があります。この関数は、citizesすべての eventlistner を削除してオブジェクトをリセットし、そのオブジェクトの市民のすべてのプロパティをリセットします。

array.pop() メソッドを使用して、ループごとに配列から最新のプッシュされたオブジェクトをポップアウトできます。配列を使用している場合、配列にはshiftpop、splice(i,1) などの多くの機能があります。等...

私はそれぞれがすべての中で最高のものだと思います..

于 2012-12-28T11:55:18.140 に答える