0

InputProcessorのtouchDownメソッドの列挙型に問題があります。私がそれを使おうとすると、それはすべての可能な列挙型を生成します...

public class Memoration implements ApplicationListener, InputProcessor {

public static enum Screen {GAME, MENU}
Screen screen;

@Override
public void create() {
   screen = Screen.MENU;
   Gdx.app.log("onCreate", "works");
   Gdx.input.setInputProcessor(this);
}

@Override
public void dispose() {
}

@Override
public void render() {
   // bla bla bla
}

@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
    Gdx.app.log("touch", "down");
    if(screen == null) 
       Gdx.app.log("screen", "null");
    if(screen == Screen.MENU) 
        Gdx.app.log("screen", "menu");
    if(screen == Screen.GAME) 
        Gdx.app.log("screen", "game");
    return false;
}
}

ログには、「onCreate:workds」、「touch:down」、「screen:null」、「screen:menu」、「screen:game」が表示されます。

4

1 に答える 1

3

クラスはMemorationと呼ばれ、InputProcessorを実装します。ただし、create()コールバックでは、 Memorationの別のインスタンスを作成し、それを入力プロセッサとして設定しているため、コールバックを取得しているのはそのインスタンスです。また、そのインスタンスに対してcreate()が呼び出されていないため、screenが初期化されることはありません。

代わりにこれを試してください...

@Override
public void create() {
   screen = Screen.MENU;
   Gdx.app.log("onCreate", "works");
   Gdx.input.setInputProcessor(this);
}
于 2013-03-08T15:27:33.393 に答える