我正在为Android开发一个应用程序,但我一直在为我的按钮创建监听器。我已经阅读了大量的文章,并且现在已经进行了几个小时的测试,但它不会起作用。我在这个例子中确实喜欢:https://gist.github.com/mattdesl/5461944我的代码中没有错误,但我的按钮根本没有反应。
这是我尝试的方式(或至少尝试过几次):
...public MainMenuScreen(final Stapler gam) {
game = gam;
stage = new Stage();
table = new Table();
table.setFillParent(true);
stage.addActor(table);
Gdx.input.setInputProcessor(stage);
font = new BitmapFont(Gdx.files.internal("fonts/Blox.fnt"));
bodoque = new BitmapFont(Gdx.files.internal("fonts/bodoque.fnt"));
shapeRenderer = new ShapeRenderer();
// Add widgets to the table here.
TextureRegion upRegion = new TextureRegion(new Texture(
Gdx.files.internal("boxLila.png")));
TextureRegion downRegion = new TextureRegion(new Texture(
Gdx.files.internal("boxGruen.png")));
BitmapFont buttonFont = new BitmapFont(
Gdx.files.internal("fonts/Blox.fnt"), false);
TextButtonStyle style = new TextButtonStyle();
style.up = new TextureRegionDrawable(upRegion);
style.down = new TextureRegionDrawable(downRegion);
style.font = buttonFont;
play = new TextButton("Play", style);
table.add(play);
play.addListener(new ClickListener() {
public void clicked(InputEvent e, float x, float y) {
game.setScreen(game.gameScreen);
Gdx.app.log("Click", "performed"); // -> never happend
}
});
// add the button with a fixed width
table.add(play).width(500);
// then move down a row
table.row();
}
...
我解决了或者至少发现了为什么它不起作用。我用自己的InputProcessor创建了我的gamworld实例,当我不创建它时,监听器工作..但现在我必须弄清楚如何使用它们..
答案 0 :(得分:3)
您可以为此添加ChangeListener。类似的东西:
play.addListener(new ChangeListener() {
public void changed (ChangeEvent event, Actor actor) {
game.setScreen(game.gameScreen);
}
});
这是听取按钮点击的方式,如libgdx scene2 wiki中所述。