Javascript 使用requestAnimationFrame设置超时期间出现控制台错误
我在鼠标滚轮上有一个事件侦听器。执行的脚本应执行以下操作: +根据滚动方向,从变量中选择1或-1 不允许在上次更改后的2秒内更改所述变量 在mousewheel事件侦听器上使用requestAnimationFrame,这样浏览器就不会不断启动该功能 我读了很多关于requestAnimationFrame的书,但不可否认,我仍然不认为我完全理解它 这是我的密码:Javascript 使用requestAnimationFrame设置超时期间出现控制台错误,javascript,console,requestanimationframe,Javascript,Console,Requestanimationframe,我在鼠标滚轮上有一个事件侦听器。执行的脚本应执行以下操作: +根据滚动方向,从变量中选择1或-1 不允许在上次更改后的2秒内更改所述变量 在mousewheel事件侦听器上使用requestAnimationFrame,这样浏览器就不会不断启动该功能 我读了很多关于requestAnimationFrame的书,但不可否认,我仍然不认为我完全理解它 这是我的密码: //request animation frame window.requestAnimFrame = (function(){ r
//request animation frame
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
function(callback){ window.setTimeout(callback, 1000/60); };
})();
//vars
var pane = 1;
var scrollPause = false;
//user scrolling
function scrolling(e){
//return if scroll paused
if (scrollPause) return;
//scroll up
if (e.wheelDelta < 0) {
pane += 1;
scrollPause = true;
}
//scroll down
if (e.wheelDelta > 0) {
pane -= 1;
scrollPause = true;
}
//reset scrollPause
setTimeout(function(){ scrollPause = false; },2000);
//log pane number
console.log(pane);
}
//scroll event listener
window.onmousewheel = function(e){ requestAnimFrame(scrolling(e)); }
这是使用requestAnimationFrame的错误方法吗?有没有更有效的方法?为什么我会收到这个错误?我想你应该这样打电话-
window.onmousewheel = function(e) { requestAnimFrame(scrolling); }
是的,这会消除错误,但是e.wheelDelta在我的滚动函数中返回undefined,因为我没有传递事件。函数window.requestAnimationFrame接受它使用特定时间戳而不是事件调用的回调。您可能必须更改实现。检查
window.onmousewheel = function(e) { requestAnimFrame(scrolling); }