【问题标题】:Respond to mouse movement when key is being pressed按键时响应鼠标移动
【发布时间】:2013-03-24 03:11:53
【问题描述】:

编辑:看起来问题出在触摸板而不是鼠标上。

目标: 即使在按键被按下时也能响应鼠标移动。

我想修改 Three.js 的 PointerLockControls 使得:如果用户在按下 W 时移动鼠标,那么相机应该继续向前移动,并且相机的方向也应该随着鼠标移动而改变.这在正常情况下不会发生。以下是听众:

鼠标移动事件监听器:

var onMouseMove = function ( event ) {
    var movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
    camera.rotation.y-=movementX*0.002;
  };

按键事件监听器:

var onKeyDown = function ( event ) {
    
        case 38: // up
        case 87: // w
            moveForward = true;
            break;
        //keys: a, s, d are handled similarly

        case 32: // space
            if ( canJump === true ) velocity.y += 10;
            canJump = false;
            break;
   }

keyup 事件的监听器:

var onKeyUp = function(event){
        case 38: // up
        case 87: // w
            moveForward = false;
            break;
}

我发现,如果我在按下 W 时按下 空格键,那么玩家会继续向前移动并响应鼠标移动。这是我想要的效果(但即使不点击 spacebar 也应该可以工作)。

【问题讨论】:

  • 您使用的是旧版本的three.js吗?我刚刚在全屏模式下运行了示例mrdoob.github.com/three.js/examples/…,发生的事情与您描述的完全相反。当按下“W”时,相机继续向前移动,相机的方向根据鼠标移动而改变。当按下空格键时,只有垂直移动(即使按下 W)。
  • 哦....当我使用笔记本电脑的触摸板时,行为就像我描述的那样。但是当我使用鼠标本身时,行为就像你描述的那样。嗯....看起来像一个新的新问题...
  • 没有我的触摸板与鼠标的行为相同。
  • 这真的很奇怪。解决这个问题的下一步应该是什么?
  • 调试。从原始的 PointerLockControls.js 文件开始,并确保在 onMouseMove() 调用中,movementX 和 motionY 的值确实得到了修改。另一个要检查的变量是速度。

标签: javascript three.js event-handling dom-events mousemove


【解决方案1】:

通常操作系统会在键入时禁用触摸板。您应该在操作系统设置的某处找到一个选项来切换它。

【讨论】:

  • 在我禁用 Windows 7 中触摸板的“触摸检查”选项后,它起作用了。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多