首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何仅检测超过100 px LibGDX的滑动

如何仅检测超过100 px LibGDX的滑动
EN

Stack Overflow用户
提问于 2014-07-01 18:37:41
回答 2查看 173关注 0票数 0

在我的游戏屏幕上,我希望只有当它超过100 to时才能检测到一个滑动,这是因为用户在游戏屏幕上点击了很多,并且它倾向于检测一个将屏幕更改为标题的滑动。如果它的长度超过100 if,我如何才能让它检测到?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-02 04:42:03

保存在上下升降的位置。

代码语言:javascript
复制
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方法中。

票数 0
EN

Stack Overflow用户

发布于 2014-07-02 14:57:28

要做到这一点,有两种方法。

第一种方法是保存触摸的起点,并测量触摸事件结束时的距离,就像Paul提到的。

第二种方法是如果使用libgdx的GestureDetector,就可以放大点击方的大小。它默认为40 pan,这意味着如果手指移动超过20 pan到任何一侧,它不再是一个点击事件,而是一个pan事件。我建议您使用GestureListener/检测器,因为它将为您提供开箱即用的基本移动手势,而不是重新编码它们。

另外一点是:按像素确定距离容易出错,因为移动设备之间的像素密度会有所不同,特别是当您在一台设备上为android!100 be编写代码时,其距离可能仅为另一台设备的一半。在这样做时要考虑像素密度,或者改变屏幕大小的1/3这样的相对测量值!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24517131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档