Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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 ClickListener触摸拖动指针始终为零_Java_Android_Libgdx_Touch Event - Fatal编程技术网

Java ClickListener触摸拖动指针始终为零

Java ClickListener触摸拖动指针始终为零,java,android,libgdx,touch-event,Java,Android,Libgdx,Touch Event,在处理listener类和实现多点触摸手势时,我遇到了一个可能的错误 代码实现 public class MyListener extends ClickListener { private List<Pointer> pointers = new ArrayList<Pointer>(); @Override public boolean touchDown(InputEvent event, float x, float y, int poi

在处理listener类和实现多点触摸手势时,我遇到了一个可能的错误

代码实现

public class MyListener extends ClickListener {
    private List<Pointer> pointers = new ArrayList<Pointer>();

    @Override
    public boolean touchDown(InputEvent event, float x, float y, int pointerIndex, int button) {
        System.out.println("Listener: touch down" + pointerIndex);
        pointers.add(new ListenerPointer(x, y, button));
        event.handle();
        return super.touchDown(event, x, y, pointerIndex, button);
    }

    @Override
    public void touchDragged(InputEvent event, float x, float y, int pointerIndex) {
        System.out.println("Listener: dragged " + pointerIndex);

        // Update the current point the user is dragging.
        for (ListenerPointer pointer : pointers) {
            if (pointer.getPointerIndex() == pointerIndex) {
                pointer.update(x, y);
                event.handle();
            }
        }
    }
}
如果我在屏幕上移动两根手指,它将只触发pointerIndex始终为零的TouchDrawed事件。尽管着陆手势上说它的指针指数是1。触摸拖动的日志始终为:

Listener: dragged 0
Listener: dragged 0

我认为这可能是LibGDX代码中的一个bug,因为这样一段简单的代码不会真的出错。

我以为我已经仔细阅读了touchdrable的文档,但我真是个傻瓜。它声明如下:

当鼠标按钮或手指触摸被移动到任何位置时调用,但仅当鼠标按钮或触摸之前的触地返回true时调用。

我猜
super.tound(事件,x,y,pointerIndex,button)
只在pointerIndex为0时返回true。解释pointerIndex>0时TouchDrawed事件未触发的原因

简单的解决方法是使
着陆
始终返回

Listener: dragged 0
Listener: dragged 0