首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在X3DOM中禁用键绑定

如何在X3DOM中禁用键绑定
EN

Stack Overflow用户
提问于 2017-05-19 16:50:27
回答 2查看 223关注 0票数 3

我正在使用X3DOM做一个简单的游戏,但是我不能按我想要的方式使用键盘按键,因为X3DOM会对它们做出反应。

示例:

代码语言:javascript
复制
window.addEventListener('keydown', event => this.onKeyDown(event));

我想要有我自己的if keyCode == 68的关键事件。这是可行的,但X3DOM也会对此做出反应,改变导航模式并显示覆盖。

如何禁用此功能?

EN

回答 2

Stack Overflow用户

发布于 2019-02-04 01:30:39

免责声明:我从未使用过x3dom,我只是在查看源代码

似乎有一些代码disables keypress handling

代码语言:javascript
复制
this.disableKeys = x3dElem.getAttribute("keysEnabled");
this.disableKeys = this.disableKeys ? (this.disableKeys.toLowerCase() == "true") : false;

稍后在设置keypress event handler时读取

代码语言:javascript
复制
this.onKeyPress = function (evt) {
    if (!this.parent.disableKeys) {
        evt.preventDefault();
        this.parent.doc.onKeyPress(evt.charCode);
    }
    this.parent.doc.needRender = true;
}

因此,设置keysEnabled=...属性似乎可以关闭此功能。奇怪的是他们的逻辑是倒退的(?)对于条件:

  • x3dElem.getAttribute("keysEnabled")必须为真(即它必须有一个属性),如果为false
  • otherwise,则this.disableKeys始终为falsey它等于该属性的值,小写形式等于False值

因此,要禁用按键事件,请使用<... keysEnabled="true" ...>

我做了一个关于向后逻辑的github issue,也许将来它会是keysDisabled="true"

更新:

在最新版本中,该属性已重命名为disableKeys,因此请使用<... disableKeys="true" ...>

票数 2
EN

Stack Overflow用户

发布于 2017-05-20 18:34:19

您可以使用event.preventDefault来阻止X3DOM对该键做出反应:

代码语言:javascript
复制
window.addEventListener('keydown', event => {
    if ((event.which === 68) || (event.keyCode === 68)){
        event.preventDefault();
        //
        // ...
        //
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44065483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档