Java InputListener不´;不要设置新屏幕

Java InputListener不´;不要设置新屏幕,java,android,button,libgdx,Java,Android,Button,Libgdx,我编写了以下代码: public void show () { skin = new Skin (Gdx.files.internal("PlayButton.json")); button = new Button(skin); button.setPosition(330,600); button.setSize(240,240); stage.addActor(button); } public void render () { stage

我编写了以下代码:

public void show () {
    skin = new Skin (Gdx.files.internal("PlayButton.json"));
    button = new Button(skin);
    button.setPosition(330,600);
    button.setSize(240,240);
    stage.addActor(button);
}

public void render () {
    stage.draw();
    stage.getBatch().begin();
    button.addListener(new InputListener() {
    public void touchUp (InputEvent event, float x, float y, int pointer, int button) {
                game.setScreen(new GameScreen(game));
            }
        });
        stage.getBatch().end();
}

如您所见,我希望在单击按钮时显示游戏屏幕。我可以点击按钮,但没有反应如何正确设置新屏幕?

将侦听器添加到
show()
方法中的
按钮中,而不是添加到
render()
方法中

@Override
public void show () {
    skin = new Skin (Gdx.files.internal("PlayButton.json"));
    button = new Button(skin);
    button.setPosition(330,600);
    button.setSize(240,240);
    button.addListener(new ClickListener(){
        @Override
        public void clicked(InputEvent event, float x, float y) {
            game.setScreen(new GameScreen(game));
            super.clicked(event, x, y);
        }
    });

    stage.addActor(button);
    Gdx.input.setInputProcessor(stage);
}

@Override
public void render (float delta) {

    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    Gdx.gl.glClearColor(1,1,1,1);

    stage.draw();
    stage.act();
}

不要每帧都向按钮添加侦听器。将它放在代码的初始化部分,即create()方法中。感谢您的帮助!然而,当我点击按钮时,有一小段时间没有任何事情发生。原因是什么?可能是因为您正在使用
GameScreen
类中的某些资源而导致延迟。使用
AssetManager
异步加载所有资源(纹理、字体、声音…),并在需要时从AssetManager获取资源。