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