gpt4 book ai didi

java - TextButton 不响应 libGDX 上的 InputListener?

转载 作者:行者123 更新时间:2023-11-30 08:48:32 26 4
gpt4 key购买 nike

我能够绘制我的按钮,但是当我点击/“触摸”它们时没有任何反应,而且我不知道我做错了什么。有人可以帮忙吗?触摸时,textButtonStyle 不应该更改为“ToothButton”吗?我不应该为 Android 应用程序使用 InputListener 吗?

主菜单按钮.java

public class MainMenuButtons extends Stage {

Stage buttons;
MMButton startButton, optionButton;

public MainMenuButtons(Viewport viewport) {

startButton = new MMButton(634,550, "Start");
optionButton = new MMButton(634,450, "Options");

buttons = new Stage(viewport);

buttons.addActor(startButton);
buttons.addActor(optionButton);
Gdx.input.setInputProcessor(this);
}

MMButton.java(主菜单按钮)

public class MMButton extends Actor{
TextButton button;
TextButton.TextButtonStyle textButtonStyle;
BitmapFont font;
Skin skin;
TextureAtlas buttonAtlas;


public MMButton(int x, int y, String name) {
font = new BitmapFont();
skin = new Skin();

buttonAtlas = new TextureAtlas(Gdx.files.internal("menuButton.atlas"));
skin.addRegions(buttonAtlas);

textButtonStyle = new TextButton.TextButtonStyle();
textButtonStyle.font = font;
textButtonStyle.up = skin.newDrawable("ToothButtonUp");
textButtonStyle.down = skin.newDrawable("ToothButton");

button = new TextButton(name, textButtonStyle);
button.setBounds(x, y, 246, 90);
button.setTouchable(Touchable.enabled);


button.addListener(new InputListener() {
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
System.out.println("down");
return true;
}
public void touchUp(InputEvent event, float x, float y, int pointer, int button ) {
super.touchUp( event, x, y, pointer, button );
}
});
}

MainMenuScreen.java(我很抱歉我真的只是想解决这个问题的所有代码!):(

OrthoCamera 是我在网上获得的一门类(class),它简化了相机的使用。

公共(public)类 MainMenuScreen 扩展屏幕{

private OrthoCamera camera;
MainMenuButtons buttons;

@Override
public void create() {
camera = new OrthoCamera();
buttons = new MainMenuButtons(new ScreenViewport());
}
@Override
public void update() {
camera.update();
buttons.draw();
}
@Override
public void render(SpriteBatch batch) {
batch.setProjectionMatrix(camera.combined);
buttons.draw();
}
@Override
public void resize(int width, int height) {
camera.resize();
buttons.getViewport().update(width,height,true);

}

最佳答案

您的问题出在 MainMenuButtons 类上。它有两个阶段。一个(按钮)添加了按钮 actors,另一个(this)设置为输入处理器。那可不行。

有两种解决方案。

要么……

替换这一行...

Gdx.input.setInputProcessor(this);

有了这个...

Gdx.input.setInputProcessor(buttons);

并且不要为扩展阶段而烦恼。

或者(如果你真的想扩展舞台)...

完全删除按钮变量,并替换这些行...

buttons.addActor(startButton);
buttons.addActor(optionButton);

有了这个...

addActor(startButton);
addActor(optionButton);

关于java - TextButton 不响应 libGDX 上的 InputListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31871148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com