Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用requestAnimationFrame设置超时期间出现控制台错误_Javascript_Console_Requestanimationframe - Fatal编程技术网

Javascript 使用requestAnimationFrame设置超时期间出现控制台错误

Javascript 使用requestAnimationFrame设置超时期间出现控制台错误,javascript,console,requestanimationframe,Javascript,Console,Requestanimationframe,我在鼠标滚轮上有一个事件侦听器。执行的脚本应执行以下操作: +根据滚动方向,从变量中选择1或-1 不允许在上次更改后的2秒内更改所述变量 在mousewheel事件侦听器上使用requestAnimationFrame,这样浏览器就不会不断启动该功能 我读了很多关于requestAnimationFrame的书,但不可否认,我仍然不认为我完全理解它 这是我的密码: //request animation frame window.requestAnimFrame = (function(){ r

我在鼠标滚轮上有一个事件侦听器。执行的脚本应执行以下操作:

+根据滚动方向,从变量中选择1或-1 不允许在上次更改后的2秒内更改所述变量 在mousewheel事件侦听器上使用requestAnimationFrame,这样浏览器就不会不断启动该功能 我读了很多关于requestAnimationFrame的书,但不可否认,我仍然不认为我完全理解它

这是我的密码:

//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); }