zoukankan      html  css  js  c++  java
  • 多点触摸的一些代码

    注: 该段代码只是我处理多点触摸时的一小部分,其中还有错误,后面已经修改掉了。

    把这些放在这里,只是为了做一个纪念。 

    public boolean onTouchEvent(MotionEvent event) {
    ispointer = true;

    int action = event.getAction() & MotionEvent.ACTION_MASK;
    if(action == MotionEvent.ACTION_DOWN)
    {
    int px = (int) event.getX(0);
    int py = (int) event.getY(0);
    GCanvas.pointerPressedX = px;
    GCanvas.pointerPressedY = py;
    }
    else if(action == MotionEvent.ACTION_UP)
    {
    GCanvas.resetPointer();
    }


    //不是游戏阶段的话,用Engine的相关方法处理。
    if(GCanvas.state != C.STATE_GAME)
    {
    Engine.mouseEvents.add(event);
    return true;
    }

    //小游戏
    if(Engine.game == null || Engine.game.isClassicGame() == false)
    {
    return false;
    }


    //游戏阶段处理。。 特殊处理:

    switch (event.getAction() & MotionEvent.ACTION_MASK) {
    case MotionEvent.ACTION_DOWN:
    this.pointerPressed(event, 0);
    break;
    case MotionEvent.ACTION_UP:
    this.pointerReleased(event);
    break;
    case MotionEvent.ACTION_MOVE:
    this.pointerDragged((int) event.getX(), (int) event.getY());
    break;
    case MotionEvent.ACTION_POINTER_DOWN:
    this.pointerPressed(event, 1);
    break;
    case MotionEvent.ACTION_POINTER_UP:
    this.pointerReleased(event);
    break;
    }
    return true; 
    }




    private void pointerPressed(MotionEvent event, int index) { int px = (int) event.getX(index); int py = (int) event.getY(index); int bid = getBtnId(px, py); if (bid != -1) { pressId |= (1 << bid); } pressingId = pressId; } private void pointerReleased(MotionEvent event) { int index = event.getActionIndex(); int px = (int) event.getX(index); int py = (int) event.getY(index); int bid = getBtnId(px, py); if(bid != -1) { releaseId |= (1 << bid); pressingId &= ~(1 << bid); } //如果点到的不是按钮区 --- if(releaseId == 0) { pressingId = 0; GCanvas.keyKeptPressed = 0; } } protected void pointerDragged(int px, int py) { if (state != C.STATE_GAME || Engine.isUseGesture == false) { return; } int bid = getBtnId(px, py); if ((1 << bid) != pressingId) { pressingId = 0; GCanvas.keyKeptPressed = 0; } }

      

  • 相关阅读:
    c# out ref parames的用法
    c#测试执行时间的方法
    c#文件的操作
    c#md5加密的简单用法
    notepad++加到右键
    mysql自动安装脚本
    Arrays.sort实现原理
    选择排序
    自带排序 Array.sort()
    vi中使用鼠标右键插入时进入(insert)visual模式
  • 原文地址:https://www.cnblogs.com/chaohi/p/2737113.html
Copyright © 2011-2022 走看看