2016-09-19 3 views
0

Я пытаюсь обнаружить нажатие клавиши внутри сцены, которая является div с идентификатором «мир». У меня есть этот код, который, как мне кажется, должен работать, но он не. Вот оно:Обнаружение нажатия клавиши внутри сцены three.js с использованием jquery

$('world').keyup(function(e){ 
    console.log('keyup'); 
    if(e.keyCode == 46 || 8) { 
     if(selectedWood != null){ 
      array.splice(index, object.findIndex(selectedWood)); 
     } 
    } 
}); 

ответ

1

Первый вопрос вам нужно «#», чтобы выбрать элемент с ID, так что $ («# мир») вместо («мир»).

Вторая проблема - e.keyCode будет работать на некоторых браузерах, но не на всех. Так как вы используете JQuery, вы можете надежно использовать e.which:

if(e.which == 46 || e.which == 8) 
+1

это не должно быть 'если (e.which == 46 || e.which == 8)'? 8 всегда будет оценивать правду. – showdev

0

В вашем окне просмотра DIV не может быть сфокусирован (в отличие от поля ввода текста), ваш метод не обнаружит каких-либо keyup. Вместо этого вам нужно приложить слушателя событий для window:

$(window).keyup(function (event) { 
    ... 
}); 

Если у вас есть какие-либо <input> поля или <textarea> элементов на веб-странице, вы, вероятно, не wan't слушать эти 3D сцены конкретного события при вводе текста. Таким образом, вы можете продлить код:

$(window).keyup(function (event) { 
    if(['INPUT', 'TEXTAREA'].indexOf(event.target.tagName) !== -1) return; 
    ... 
}); 
Смежные вопросы