touchDragged在libgdx中如何工作? [英] How does touchDragged work in libgdx?

查看:69
本文介绍了touchDragged在libgdx中如何工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在学习libgdx游戏编程,现在我已经学会了如何使用touchDown,但是我不知道如何使用touchDragged.计算机如何知道手指向哪个方向拖动(用户是向左拖动还是向左拖动?对)

I am currently learning libgdx game programming,now i have learnt how to use touchDown but iam not getting idea how to use touchDragged.How will the computer knows in which direction the finger is dragged(whether the user has dragged to left or right)

推荐答案

计算机不知道这一点.或至少界面不会告诉您此信息.看起来像这样:

The computer doesn't know that. Or at least the interface won't tell you this information. It looks like this:

public boolean touchDragged(int screenX, int screenY, int pointer);

与touchDown几乎相同:

It is nearly the same like touchDown:

public boolean touchDown(int screenX, int screenY, int pointer, int button);

在发生touchDown事件之后,只有touchDragged事件会发生(对于同一指针),直到触发touchUp事件为止.如果您想知道指针的移动方向,则必须自己计算上一个接触点与当前接触点之间的差值(差值)来自己计算.可能看起来像这样:

After a touchDown event happened, only touchDragged events will occur (for the same pointer) until a touchUp event gets fired. If you want to know the direction in which the pointer moved, you have to calculate it yourself by computing the delta (difference) between the last touchpoint and the current one. That might look like this:

private Vector2 lastTouch = new Vector2();

public boolean touchDown(int screenX, int screenY, int pointer, int button) {
    lastTouch.set(screenX, screenY);
}

public boolean touchDragged(int screenX, int screenY, int pointer) {
    Vector2 newTouch = new Vector2(screenX, screenY);
    // delta will now hold the difference between the last and the current touch positions
    // delta.x > 0 means the touch moved to the right, delta.x < 0 means a move to the left
    Vector2 delta = newTouch.cpy().sub(lastTouch);
    lastTouch = newTouch;
}

这篇关于touchDragged在libgdx中如何工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆