Java ClickListener触摸拖动指针始终为零
在处理listener类和实现多点触摸手势时,我遇到了一个可能的错误 代码实现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
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