将ClickListener添加到TextButton LibGDX

时间:2014-12-31 01:21:29

标签: android button menu libgdx onclicklistener

我正在为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实例,当我不创建它时,监听器工作..但现在我必须弄清楚如何使用它们..

1 个答案:

答案 0 :(得分:3)

您可以为此添加ChangeListener。类似的东西:

    play.addListener(new ChangeListener() {
        public void changed (ChangeEvent event, Actor actor) {
            game.setScreen(game.gameScreen);
        }
    });

这是听取按钮点击的方式,如libgdx scene2 wiki中所述。