如何使用touchup和touchDown按钮

时间:2016-10-01 14:43:26

标签: button libgdx

我有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帮我提出任何建议

2 个答案:

答案 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);