gpt4 book ai didi

java - android触摸输入错误

转载 作者:行者123 更新时间:2023-11-29 21:42:09 25 4
gpt4 key购买 nike

我正在尝试制作一款游戏,当手指在屏幕上拖动时,物体会移动。在主循环中,我根据手指的运动更新对象的位置。

在手机上将手指移动一定距离应该会将对象移动相同的距离。这适用于 Nexus 7,但在 Droid X( Gingerbread )上,对象的移动速度不如手指。例如,如果我将手指一直拖过屏幕,对象只会移动一半的距离。运动也感觉不可预测(有时它移动得更远,有时它只移动一点)。什么可能导致这种情况?

我正在使用 libgdx。在主循环中,我将 dx 和 dy 添加到对象的 x 和 y。

这是触摸事件(我将屏幕上的所有手指存储在一个数组中,并且只访问第一个手指)。 sp 是一个临时 vector 。

@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
for (int i = 0; i < MAX_TOUCHPOINTS; i++) {
if (touchIDs[i] == -1) {
touchIDs[i] = pointer;
if (i == 0) {
sp.x = screenX;
sp.y = screenY;
camera.unproject(sp);
prevX = sp.x;
prevY = sp.y;
}
break;
}
}
return true;
}

@Override
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
int location = -1;
for (int i = 0; i < MAX_TOUCHPOINTS; i++) {
if (touchIDs[i] == pointer) {
location = i;
break;
}
}
if (location == -1)
return false;
for (int i = location; i < MAX_TOUCHPOINTS - 1; i++) {
touchIDs[i] = touchIDs[i + 1];
}
touchIDs[MAX_TOUCHPOINTS - 1] = -1;
if (touchIDs[0] != -1) {
sp.x = Gdx.input.getX(touchIDs[0]);
sp.y = Gdx.input.getY(touchIDs[0]);
camera.unproject(sp);
prevX = sp.x;
prevY = sp.y;
}
return true;
}

@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
if (pointer == touchIDs[0]) {
sp.x = screenX;
sp.y = screenY;
camera.unproject(sp);
dx = sp.x - prevX;
dy = sp.y - prevY;
prevX = sp.x;
prevY = sp.y;
return true;
}
return false;
}

最佳答案

我在阅读您的代码时遇到了一些麻烦,但是我有一些可能对您有用的东西,因为我曾经构建过一个触摸滚动系统。

Libgdx 已经内置了跟踪触摸移动的功能。

Gdx.input.getDeltaX() 函数gdx.input.getDeltaY()

这些函数将产生一个代表距离变化的值。因此,您可以简单地将此值添加到您用来存储要滚动的内容的位置。

希望对您有所帮助。

关于java - android触摸输入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16787118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com