我是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);
我能够在屏幕上看到我的按钮。现在我想要做的是添加一些代码,当单击或触摸按钮时会调用这些代码。有人可以帮忙吗?
答案 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);
希望它有所帮助。