需要帮助在libgdx中使用scene2d按钮

时间:2014-06-20 12:58:36

标签: java android button libgdx scene2d

我是libGDX的新手。我正在尝试通过扩展com.badlogic.gdx.scenes.scene2d.ui.Button来创建自定义按钮。

我想要这个类中所有与按钮相关的逻辑。但我没有得到如何使点击工作。我阅读了许多关于添加事件监听器的教程,但没有任何工作。

public class RestartButton extends Button {

public RestartButton(ButtonStyle style) {
    super(style);

}

@Override
public void draw(SpriteBatch batch, float parentAlpha) {
    batch.draw(TextureProvider.getInstance().getRestart(), 175, 100);
}

}

我试图在屏幕上添加我的按钮(即show方法),就像这样

RestartButton restartButton;
restartButton=new RestartButton(new ButtonStyle());
Stage stage;
stage.addActor(restartButton);

我能够在屏幕上看到我的按钮。现在我想要做的是添加一些代码,当单击或触摸按钮时会调用这些代码。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

restartButton = new RestartButton(new ButtonStyle());
button.addListener(new ClickListener() {
    @Override
    public void clicked(InputEvent event, float x, float y) {
        System.out.println("Restart clicked!");
    }
});
stage.addActor(restartButton);

答案 1 :(得分:1)

它不起作用,因为您需要为Button设置setBounds。如果你想在位置(175,100)绘制按钮,你可以直接从Button Class创建一个Button并调用

button.setBounds(x, y, width, height);

然后添加监听器将起作用,因为现在您的按钮实际上在舞台中有一个位置和一个区域。如果您仍然需要根据自己的原因扩展按钮类,可以直接在扩展类中设置边界,也可以在RestartButton类中传递另一个参数。类似于:

   public RestartButton(ButtonStyle style, Vector2 position, Vector2 size) {
       super(style);
       this.setBounds(position.x, position.y, size.x, size.y);
   }

然后按钮将自动绘制到您想要的位置,而无需覆盖绘制方法。使用this.addListener(yourListener);

添加侦听器

希望它有所帮助。