Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在X3DOM中禁用密钥绑定_Javascript_X3dom - Fatal编程技术网

Javascript 如何在X3DOM中禁用密钥绑定

Javascript 如何在X3DOM中禁用密钥绑定,javascript,x3dom,Javascript,X3dom,我将X3DOM用于一个简单的游戏,但我不能以我想要的方式使用键盘键,因为X3DOM会对它们做出反应 例如: window.addEventListener('keydown', event => this.onKeyDown(event)); 如果keyCode==68,我想为设置自己的键事件。这是可行的,但X3DOM也会对此做出反应,改变导航模式并显示覆盖图 如何禁用此选项?您可以使用以下选项防止X3DOM对该键作出反应: window.addEventListener('keydow

我将X3DOM用于一个简单的游戏,但我不能以我想要的方式使用键盘键,因为X3DOM会对它们做出反应

例如:

window.addEventListener('keydown', event => this.onKeyDown(event));
如果keyCode==68,我想为
设置自己的键事件。这是可行的,但X3DOM也会对此做出反应,改变导航模式并显示覆盖图

如何禁用此选项?

您可以使用以下选项防止X3DOM对该键作出反应:

window.addEventListener('keydown', event => {
    if ((event.which === 68) || (event.keyCode === 68)){
        event.preventDefault();
        //
        // ...
        //
    }
});
免责声明:我从未使用过x3dom,我只是随便翻看源代码

似乎有一些代码

稍后在设置时阅读:

因此,设置
keysEnabled=…
属性似乎可以关闭此功能。奇怪的是,对于这种情况,他们的逻辑是反向的(?):

  • x3dElem.getAttribute(“keysEnabled”)
    必须是truthy(也就是说,它必须有一个属性)
  • 如果这是错误的,
    this.disableKeys
    总是错误的
  • 否则它等于该属性的值lower cased等于
    'true'
因此,要禁用按键事件,请使用

我对向后的逻辑做了一个解释,也许将来它会被
keysDisabled=“true”
替代

更新:
在最新版本中,该属性已重命名为
disableKeys
,因此请使用

这仅在加载x3dom之前能够挂接到该属性时有效,否则由于事件处理程序的排序,这就太晚了
this.disableKeys = x3dElem.getAttribute("keysEnabled");
this.disableKeys = this.disableKeys ? (this.disableKeys.toLowerCase() == "true") : false;
this.onKeyPress = function (evt) {
    if (!this.parent.disableKeys) {
        evt.preventDefault();
        this.parent.doc.onKeyPress(evt.charCode);
    }
    this.parent.doc.needRender = true;
}