8

Libgdxで画面を完全に破棄する適切な方法は何ですか? 現在、前の画面でボタンがあった場所をクリックすると、その画面にいた場合と同じようにボタンが実行されます。.dispose()メソッドでできることすべてを行う必要がありdispose()ますか? または、画面上のすべてを処分する簡単な方法はありますか?

4

3 に答える 3

19

残念ながら、これ以上簡単な方法はありません。Disposableこれらのクラスは、自動的に実行するために、共通の " " インターフェイスなどを一切共有しません。メソッドを持つものはすべて、dispose()不要になったときに手動で破棄する必要があります。

これはScreens自分自身にも当てはまります。切り替え時にScreensそれらは自動的に破棄されませんが、( を呼び出す前にGame.setScreen()) 自分で破棄する必要があります。

一方、これは大したことではありません。あなたのすべてを調べて、Screenそれを処分する必要があるかどうかを確認してください. dispose メソッドがある場合は、 の中で呼び出しdispose()ますScreen

しかし、これは最後のScreen. aStageと usedを使用していると思いますGdx.input.setInputProcessor(stage);。この設定は、画面を変更しても変更されず、入力プロセッサをStagecurrent のScreen、または current の入力を処理するものに設定する必要がありますScreen。そうすれば、「古い」ステージはもう入力をキャッチしません。

于 2013-10-16T04:30:12.483 に答える
0

残念ながら、LibGDX APIのドキュメントには

dispose() は自動的に呼び出されないことに注意してください。

が自動的に呼び出され、非常にうまく機能するため、画面内のメソッド内にすべての使い捨て ( StageSkinTexture... など) を配置します。hide()hide()

例:

public class GameScreen implements Screen {
...
    @Override
    public void hide() {
        mainStage.dispose();
        playGroundStage.dispose();
        controller.dispose();
        labelActor.dispose();
    }
...
}
于 2016-02-29T11:37:36.820 に答える