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获取资源。