jQuery MouseMove замедляет WebGL с Three.js

0

Если я mousemove обработчик mousemove в мой контейнер WebGL, частота кадров резко падает при перемещении мыши. Это происходит только в том случае, если я использую функцию mousemove jQuery, если вместо этого я использую простой addEventListener падение не происходит. Есть ли что-то конкретное, что мне нужно сделать для jQuery, чтобы этого не произошло? Или это известный дефект в jquery?

Быстрый код:

document.getElementById('wct').addEventListener( "mousemove", function(e) {
    var x = e.pageX - this.offsetLeft
    var y = e.pageY - this.offsetTop
    sc_outer.light.position.x = x
    sc_outer.light.position.y = y
})

Медленный код:

$('#wct').mousemove( function(e) {
    var x = e.pageX - this.offsetLeft
    var y = e.pageY - this.offsetTop
    sc_outer.light.position.x = x
    sc_outer.light.position.y = y
})
Теги:
three.js
webgl

1 ответ

0

Замедление происходит из-за частых вызовов jquery, чтобы найти конкретный элемент DOM (в вашем случае #wct) и проверить перемещение мыши там.

Слушатели событий работают по-разному и предназначены специально для сбора событий.

  • 0
    Я не делаю частые звонки. Я делаю поиск только для регистрации обратного вызова. Сам код обратного вызова такой же.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню