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; } }

      

  • 相关阅读:
    datalist和repeater中radiobutton单选的问题
    SQL循环在表中增加新列
    [jQuery]使用jQuery.Validate进行客户端验证(高级篇上)——不使用微软验证控件的理由
    C# Excel 行高,列宽,合并单元格,单元格边框线,冻结 关于C#操作EXCLE常见操作比较全的
    JS弹出窗口的运用与技巧(转)
    设计模式完整备忘录
    jquery + ashx + Json 操作数据
    SQL STUFF函数 拼接字符串
    获取SQL 各字段说明,表名等有效信息
    谈谈对于企业级系统架构的理解
  • 原文地址:https://www.cnblogs.com/chaohi/p/2737113.html
Copyright © 2011-2022 走看看