Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 需要使用libgdx中的scene2d按钮的帮助吗_Java_Android_Button_Libgdx_Scene2d - Fatal编程技术网

Java 需要使用libgdx中的scene2d按钮的帮助吗

Java 需要使用libgdx中的scene2d按钮的帮助吗,java,android,button,libgdx,scene2d,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

我是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);

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

它不起作用,因为您需要为按钮设置背景。如果您想在位置(175100)上绘制按钮,您可以直接从button类创建一个按钮并调用

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);
按钮。收进边界(x、y、宽度、高度)

然后添加监听器就可以了,因为现在你的按钮在舞台上会有一个位置和一个区域。如果出于自身原因仍需要扩展button类,则可以直接在扩展类中设置边界,也可以在RestartButton类中传递另一个参数。类似于:

   public RestartButton(ButtonStyle style, Vector2 position, Vector2 size) {
       super(style);
       this.setBounds(position.x, position.y, size.x, size.y);
   }
然后按钮将自动绘制到您想要的位置,而无需覆盖绘制方法。使用
this.addListener(yourListener)添加侦听器


希望有帮助。

谢谢@noone。但这是行不通的。重新启动点击!从不显示。
Gdx.input.setInputProcessor(阶段)也添加了这个
batch.draw(TextureProvider.getInstance().getRestart(),getX(),getY())您正在某个地方绘制它,但按钮实际上在其他地方。因此,您可以随意点击图片,但按钮本身无法识别它。我正在使用stage.draw()来完成此操作。。这还不够吗?很抱歉没有对@noone-answer发表评论,但我的声誉太低了,我不允许:/这正是我在评论中描述的。这与单击侦听器相结合应该可以工作。而且没有理由再延长按钮了。@PrashantOnkar请将其标记为已接受的答案,这样就不会再将其列为未回答。