ゲームを一時停止するコードがあり、次のように一時停止機能を実行します。
public function onKeyPress(keyboardEvent:KeyboardEvent) :void
{
//Check for pause
if(keyboardEvent.keyCode == Keyboard.P)
{
//If the timer is still running
if(gameTimer.running)
{
gameTimer.stop();
Mouse.show();
pauseText = new PauseText();
pauseText.x = 150;
pauseText.y = 100;
addChild(pauseText);
//If the player is using the mouse, resume by clicking on the player
if(mouseControl)
{
player.addEventListener(MouseEvent.CLICK, resumeGame);
pauseText.pauseInformation.text = "click on yourself";
}
else
{
pauseText.pauseInformation.text = "press 'p'";
}
}
else
{
//Only allow the player to resume with P IF he is using the keyboard
//This prevents cheating with the mouse.
if(!mouseControl)
{
gameTimer.start();
removeChild(pauseText);
pauseText = null;
}
}
}
}
ゲームは完全に正常に実行されます。私の最初のプレイスルーでは、一時停止機能が機能します。ただし、後で死んでゲームを再開し、一時停止すると、次のメッセージが表示されます。
TypeError: Error #2007: Parameter child must be non-null.
at flash.display::DisplayObjectContainer/removeChild()
at Game/onKeyPress()
それでもゲームは問題なく動きます。ただし、一時停止または一時停止解除するたびに、このエラーが表示されます。私が再び死んだ場合、再起動してから一時停止すると、これらのエラーのうちの 2 つが表示されます。私が収集できることから、それはpauseTextを削除しようとしているように見えます...しかし、最初のプレイスルーで問題なく削除していました.removeChild()を使用してから、コードの他の部分にnullを設定しましたが、動作します大丈夫。さらに、trace(“a”); を追加すると、関数ヘッダーの直後のステートメントで、出力パネルに「a」が表示される前にエラーが発生します。
どうしたの?
追加メモ: 最初のプレイスルーで一時停止機能をまったく使用しない場合、2 回目のプレイスルーで呼び出してもエラーは発生しません。