【问题标题】:Android onTouchEvent() continuous touch not detectedAndroid onTouchEvent() 未检测到连续触摸
【发布时间】: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


    【解决方案1】:

    记住最后一个位置。 onTouchListener 仅在手指位置发生变化时才被调用,而不是一直被调用。因此,如果它仍然存在,则不会拨打电话。如果它不接触,则不会拨打电话。 Android 就是这样工作的,你需要以这种方式工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-22
      相关资源
      最近更新 更多