我一直在做一个游戏,现在我正在进行控制,我正在使用Action_Move遇到问题。我的代码设置如下所示。
for(int i = 0; i < event.getPointerCount(); i++)
{
if(event.getPointerId(i) == 0 && primDown)
{
x = (int) event.getX();
y = (int) event.getY();
}
else if(event.getPointerId(i) == 1 && secDown)
{
x1 = (int) event.getX(1);
y1 = (int) event.getY(1);
if(dirPadRight.contains(x1, y1))
{
Log.w("game", "Right " + x1 +" " + y1);
}
if(dirPadLeft.contains(x1, y1))
{
Log.w("game", "Left " + x1 +" " + y1);
}
}
}
primDown和secDown布尔值在下面的switch语句中设置:
int index = event.getAction() >> MotionEvent.ACTION_POINTER_ID_SHIFT;
int pointerId = event.getPointerId(index);
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_POINTER_DOWN:
if(pointerId == 0)
{
primDown = true;
}
else if(pointerId == 1)
{
secDown = true;
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
if(pointerId == 0)
{
x = 0;
y = 0;
primDown = false;
}
else if(pointerId == 1)
{
x1 = 0;
y1 = 0;
secDown = false;
}
break;
}
基本上,我只是在任何动作发生时刷新x,y,x1和y1,这样我就不必在switch语句中处理ACTION_MOVE,但是当我尝试使用辅助动作时指针,它不会更改event.getX(1)或event.getY(1)。你可以看到,我将日志语句放入我的for循环的第二个指针部分,然后它们关闭我是否主要指针向下和次要向下,或者如果我已经提起主指针而只是辅助是向下,但它没有改变x1或y1,它不断输出原始点。
有谁知道为什么这对我不起作用?很奇怪,它知道一个运动正在发生,但它只是没有改变x和y,所以我想有人会在这里知道。如果您需要更多代码,请告诉我们。提前谢谢!
WWaldo
答案 0 :(得分:0)
试试这个
if(pointerId == 0)
{
primDown = true;
secDown=false;
}
else if(pointerId == 1)
{
secDown = true;
primDown=false;
}
很难说在没有看到所有代码的情况下导致问题的原因。可能是你搞乱了布尔变量,这样每当代码工作时它都无法正常工作。