スペース シューターでは、別の LUA ファイルを介して敵を追加します。これらの敵にはショットを作成するタイマーがあります。シーンを変更するときは、敵のすべてのインスタンスを削除し、タイマーを停止して、すべてのショットを削除したいと考えています。
個々の敵をシーンの表示グループに追加することで削除できましたが、タイマーやショットではそれができません。
どうすればいいですか?
スペース シューターでは、別の LUA ファイルを介して敵を追加します。これらの敵にはショットを作成するタイマーがあります。シーンを変更するときは、敵のすべてのインスタンスを削除し、タイマーを停止して、すべてのショットを削除したいと考えています。
個々の敵をシーンの表示グループに追加することで削除できましたが、タイマーやショットではそれができません。
どうすればいいですか?
タイマーを作成するときは、次のようにします。
次のように、シーンの上部でタイマーを宣言して、シーンのグローバル スコープを取得します。
local timer_1
次に、タイマーを次のように使用します。
timer_1 = timer.performWithDelay(1000,myFunction,-1)
次に、次のように停止できます。
if(timer_1)then
timer.cancel(timer_1)
end
コーディングを続けてください........ :)
私がすること (実際に私のゲームでこの種の問題を処理する方法) は、敵を追跡するためのテーブルを作成し、敵がタイマーとショットの両方を所有するオブジェクト指向クラスになるようにすることです。
例:
内部タイマー (myEnemy.timerID) と発射されたショットの内部テーブル (myEnemy.shots) を持つ「敵」クラス (ローカル myEnemy) を作成できます。
さらに良いことに、タイマーを停止してショットを破壊する「destroy」メソッド (myEnemy.destroy()) を敵に追加します。その後、シーンを変更するときに、テーブルを反復処理し、各敵で destroy メソッドを呼び出すだけです。タイマー/ショットは自動的に破棄されます:)
あなたのコードがすでにオブジェクト指向であるかどうかはわかりませんが、この種の場合は物事がずっと簡単になります:)さらに情報が必要な場合はお知らせください
乾杯