在我的游戏屏幕上,我希望只有当它超过100 to时才能检测到一个滑动,这是因为用户在游戏屏幕上点击了很多,并且它倾向于检测一个将屏幕更改为标题的滑动。如果它的长度超过100 if,我如何才能让它检测到?
发布于 2014-07-02 04:42:03
保存在上下升降的位置。
private Vector2 downPos = new Vector2(), upPos = new Vector2();
private Vector3 tmp = new Vector3();
public void touchDown(float x, float y.....) {
tmp.set(x, y, 0);
camera.unproject(tmp);
downPos.set(tmp.x, tmp.y);
}
public void touchUp(float x, float y.....) {
tmp.set(x, y, 0);
camera.unproject(tmp);
upPos.set(tmp.x, tmp.y);
float distance = downPos.dst(upPos); // the distance between thoose vectors
if (distance > 100) {
// there was a swipe of a distance longer than 100 pixels.
}
}如果您不想只在触摸时才这样做,请将代码放在touchdrag方法中。
发布于 2014-07-02 14:57:28
要做到这一点,有两种方法。
第一种方法是保存触摸的起点,并测量触摸事件结束时的距离,就像Paul提到的。
第二种方法是如果使用libgdx的GestureDetector,就可以放大点击方的大小。它默认为40 pan,这意味着如果手指移动超过20 pan到任何一侧,它不再是一个点击事件,而是一个pan事件。我建议您使用GestureListener/检测器,因为它将为您提供开箱即用的基本移动手势,而不是重新编码它们。
另外一点是:按像素确定距离容易出错,因为移动设备之间的像素密度会有所不同,特别是当您在一台设备上为android!100 be编写代码时,其距离可能仅为另一台设备的一半。在这样做时要考虑像素密度,或者改变屏幕大小的1/3这样的相对测量值!
https://stackoverflow.com/questions/24517131
复制相似问题