【发布时间】:2014-05-31 23:32:35
【问题描述】:
我正在尝试在以相机为中心的玩家游戏中实现操纵杆。 操纵杆增加或不增加“dx”或“dy”。 我创建了一个处理来自 GameSurfaceView 的所有触摸的 GameControls 类。 当我触摸屏幕并移动手指时一切正常,但当我停止时,onTouch 事件停止触发。
public void handleMultitouch(MotionEvent event)
{
int ptrId=-1;
int action = event.getAction();
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
point.x=(int) event.getX();
point.y=(int) event.getY();
if(joystickEntidade.colide(point))
{
c++;
Log.e("down",event.getPointerId(0) +"");
idJoystick=action;
JSdown(point.x,point.y);
}
break;
case MotionEvent.ACTION_UP:
point.x=(int) event.getX();
point.y=(int) event.getY();
if(event.point(0)==point)
{
c=0;
JSup(event);
idJoystick=-1;
}
else
Sup(point.x,point.y);
break;
case MotionEvent.ACTION_POINTER_DOWN:
ptrId = action >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
int ptrIdx = event.findPointerIndex(ptrId);
point.x=(int) event.getX(ptrIdx);
point.y=(int) event.getY(ptrIdx);
if (joystickEntidade.colide(point))
{
idJoystick=ptrId;
JSdown(point.x,point.y);
}
else
Sup( point.x,point.y);
break;
case MotionEvent.ACTION_POINTER_UP:
ptrId = action >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
/*if (joystickEntidade.colide(pontoEntidade))
JSup(event);
else*/
pontoEntidade.x=(int) event.getX(ptrId);
pontoEntidade.y=(int) event.getY(ptrId);
if(idJoystick==ptrId)
{
JSdown(pontoEntidade.x,pontoEntidade.y);
}
/* Log.e("APU", (int)event.getX(ptrId)+"-"+(int)event.getY(ptrId));*/
break;
case MotionEvent.ACTION_MOVE:
point.x=(int) event.getX();
point.y=(int) event.getY();
for(int i = 0; i < event.getPointerCount(); ++i)
if(event.getPointerId(i)==idJoystick)
{
c--;
JSdown(point.x,point.y);
}
break;
default:
break;
}
有没有什么方法可以持续跟踪手指的位置,即使我没有移动手指?
【问题讨论】:
标签: java android touch ontouchlistener