我有3个按钮,我正在尝试做一些关于touchup和touchdown的东西,我在stackoverflow中读了很多东西,但是它让我很困惑我试过了
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
if(button1.getX()==screenX&&button1.getY()==screenY) {
Gdx.app.log("button", "touchdown");
}
return true;
}
我也尝试了打击状态,并且不知道使用它的正确方法.plz帮我提出任何建议
答案 0 :(得分:1)
我不明白你的问题。您可以为按钮添加一个侦听器,它可以捕获按钮的触地/触摸/检查状态:
Button playButton = new Button();
playButton.addListener(new InputListener() {
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
return true;
}
});
查看InputListener API,找到这些状态的解释。例如,达阵方法:
"当演员按下鼠标按钮或手指触摸时调用。如果返回true,则此侦听器将接收所有touchDragged和touchUp事件,即使是那些未超过此actor的事件,直到收到touchUp。此外,当返回true时,事件被处理}。"
您还可以为这些状态设置不同的按钮图像:Link
创建一个InputListener
并将其附加到三个按钮中的每一个。当您收到例如touchDown时,您可以使用event参数获取listenerActor并检查使用了哪个按钮:
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
if (event.getListenerActor().equals(playButton)) {
}
}
Haven没有对它进行过测试,但它应该可行:
public class Example {
private Button button1;
private Button button2;
private Button button3;
public Example() {
MyListener listener = new MyListener();
// create the buttons...
button1.addListener(listener);
button2.addListener(listener);
button3.addListener(listener);
}
private class MyListener extends InputListener {
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
if (event.getListenerActor().equals(button1)) {
Gdx.app.log("Example", "button 1 touchdown");
} else if (event.getListenerActor().equals(button2)) {
Gdx.app.log("Example", "button 2 touchdown");
} else if (event.getListenerActor().equals(button3)) {
Gdx.app.log("Example", "button 3 touchdown");
}
return super.touchDown(event, x, y, pointer, button);
}
}
}
答案 1 :(得分:0)
如果使用输入处理器,则必须将输入处理器设置为类。这可以通过以下代码来完成。
//in your create method
Gdx.input.setInputProcessor(this);