Если я 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
})
Замедление происходит из-за частых вызовов jquery, чтобы найти конкретный элемент DOM (в вашем случае #wct) и проверить перемещение мыши там.
Слушатели событий работают по-разному и предназначены специально для сбора событий.