0

を含むメインクラスがあります

registerscreen = new registerScreen(this);
emailRegisterscreen = new emailRegisterScreen(this);

にはregisterScreen、コンストラクターで作成されたリスナーを含む emailButton が含まれています。

emailButton.addListener(new ClickListener() {
        @Override
        public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
            super.touchUp(event, x, y, pointer, button);
            Gdx.app.log("registerscreen", "email clicked");
            gameHolder.setScreen(gameHolder.emailRegisterscreen);
        }
    });

gameHolderメインクラスです。

さて、この上記の例は、emailRegisterscreen以前に初期化した場合にのみ機能しますemailScreen(上記のスニペットは機能しません)。それを機能させて、まだ登録画面を最初に定義することが可能かどうか疑問に思っていましたか?

Javaは、gameHolder.emailRegisterscreenそれへの参照の代わりに現在の値を使用していると思います。

4

1 に答える 1

0

ああ、私はそれを理解しました。

私はラインを持っていた

Gdx.input.setInputProcessor(stage);

私の画面の両方のコンストラクターで。これにより、ユーザーに最初の画面が表示されている間に、2 番目の画面が入力プロセッサをオーバーライドしました。(したがって、エラーは発生しません!)

修理:

@Override
public void show() {
    Gdx.input.setInputProcessor(stage);
}

これを両方の画面に追加しました。

于 2013-03-15T12:33:00.453 に答える