2

Phaser で次の関数を使用して、最初の 5 秒後に消えるフローティング命令を作成しています。この関数は、create関数内から呼び出されます。

setupText: function () {
  this.instructions = this.add.text( 510, 600, 
    'Use Arrow Keys to Move, Press Z to Fire\nClicking does both', 
    {font: '20px monospace', fill: '#fff', align: 'center'}
  );
  this.instructions.anchor.setTo(0.5, 0.5);
  this.time.events.add(5000, this.instructions.destroy, this);
},

5 秒後にゲーム全体が応答しなくなるため、時限イベントはここで使用すべきものではないことがすぐに明らかになりました。

まったくの初心者なので、そのようなイベントを実装する正しい方法を探しましたが、何も見つかりませんでした。

私がフォローしているチュートリアルでは、メッセージを保持する秒数を保持する変数を作成し、update制限時間に達した場合にテキストを破棄する関数から呼び出します。update最初の 5 秒間だけ必要な場合でも、チェック関数が何度も呼び出されるため、これは私には悪いアプローチのように思えます。

だから私はこれを行うための最良の方法についての助けと、私のコードがゲーム全体を停止させた理由の説明を探しています.

4

1 に答える 1

2

問題は、これを呼び出すときです:

this.time.events.add(5000, this.instructions.destroy, this);

おそらくあなたのゲームであるオブジェクトのdestroy関数を呼び出します。this

それを修正するには、this.instructions代わりに渡します。

this.time.events.add(5000, this.instructions.destroy, this.instructions);
于 2014-09-05T08:44:04.190 に答える