簡體   English   中英

keydown 在threejs畫布中不起作用,OrbitControls上

[英]keydown doesn't work in threejs canvas, OrbitControls on

我正在開發一個 Threejs 演示,它里面有幾個對象。 我想要的是畫布頂部位置的form元素,用戶可以在其中輸入文本。


背景

我正在使用下面的函數動態創建一個表單,它似乎工作得很好。

function createInput() {
    var form = document.createElement( 'form' );
    form.className = 'form-inline';
    form.style.zIndex = 100;
    form.style.position = 'absolute';
    form.style.top = '0px';
    form.style.left = '0px';
    var div = document.createElement( 'div' );
    div.className = 'form-group';
    form.appendChild( div );
    var input = document.createElement( 'input' );
    input.id = "newId";
    input.type = 'email';
    input.className = 'form-control form-control-sm';
    input.placeholder = 'Email..'
    input.name = 'email';
    var button = document.createElement( 'button' );
    button.id = "submitLabel";
    button.type = 'button';
    button.className = 'btn btn-primary btn-sm';
    button.innerHTML = "Put";
    var trashButton = document.createElement( 'button' );
    trashButton.id = "trashLabel";
    trashButton.type = 'button';
    trashButton.className = 'btn btn-danger btn-sm';
    trashButton.innerHTML = "Del";
    div.appendChild( input );
    form.appendChild( button );
    form.appendChild( trashButton );
}

請注意,我在畫布中使用了OrbitControls 下面是我的 html 的結構。 它有兩個部分 - 一個是完全獨立的搜索面板,另一個是通過iframe元素加載的canvas元素。

在此處輸入圖片說明

我的軌道控件被實例化為controls = new THREE.OrbitControls( camera, container ); 其中容器稱為renderer.domElementcanvas元素。


問題

不幸的是,關鍵輸入在表單的input中不起作用。 元素,即inputbutton專注於點擊,但input不注冊任何擊鍵。

當我檢查事件偵聽器列表時,keydown 附加到窗口。

在此處輸入圖片說明 在此處輸入圖片說明

當我在控制台調試器中刪除這個特定的keydown事件時,表單開始工作並且沒有任何中斷,如下所示。

在此處輸入圖片說明


完成到現在

我已經瀏覽了大部分關於此的 SO 帖子,以及在這里管理的這個問題: https : //github.com/mrdoob/three.js/issues/4327但是,要么我錯過了一些東西,要么有這里是一個真正的問題。 我相信我可以刪除附加到window的默認keydown事件,但我認為這不是一種解決方法。

如果有人願意對此有所了解,那將非常有幫助。 如果您需要代碼中的其他內容,請告訴我。

您可以嘗試設置 OrbitControls.enableKeys = false 嗎?

如果這允許您的事件傳播.. 也許您可以對您的輸入進行 onblur / onfocus 並切換 OrbitControls.enableKeys。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM