0

ボタンを押すと子が作成され、子が押されると子が削除されます....これは機能しますが、ボタンをもう一度クリックしても子は再度作成されません。

これどうやってするの?これが私のコードです:

var bikeride:MovieClip = new ridingbike();
ridinb.addEventListener(MouseEvent.CLICK, openbike); 
function openbike(evt:MouseEvent):void { 

addChild(bikeride);
} 


bikeride.addEventListener(MouseEvent.CLICK, closebike); 
function closebike(evt:MouseEvent):void { 
    bikeride.removeChildAt(0);
}  
4

2 に答える 2

2

次を使用して子を削除できます。

removeChild(bikeride);;

インスタンスを保存しない場合は、次のbikerideように実行できます。

function closebike(evt:MouseEvent):void { 
    var bike:DisplayObject = DisplayObject(evt.target);
    bike.parent.removeChild(bike);
}
于 2012-10-24T08:01:16.073 に答える
1

Florent の回答に加えて、イベント リスナーを削除し、操作をbikeride試みる前に親があるかどうかを確認することもできます。これにより、null オブジェクト参照エラーが回避され、確実bikerideにガベージ コレクションが行われます (メモリから削除され、リソースが解放されます)。

bikeride.addEventListener(MouseEvent.CLICK, closebike); 

function closebike(evt:MouseEvent):void
{
    if(bikeride.parent)
    {
        bikeride.parent.removeChild(bikeride);
    }

    bikeride.removeEventListener(MouseEvent.CLICK, closebike);
}

オブジェクトが適切に「削除」されることを期待している場合は、イベント リスナーを削除することが非常に重要です。

于 2012-10-24T08:04:33.623 に答える