3
我有一個相當簡單的功能,檢測窗口滾動。當用戶停止滾動時觸發超時事件(500毫秒)。這結束然後監聽器和超時。然後,我創建(GSAP)窗口到某個點。一旦動畫完成,監聽器會再次啓動。有時候...再次檢測到滾動,所以整個功能被激發兩次。請查看控制檯以查看發生的情況。該窗口檢測到滾動莫名其妙
代碼在這裏:
var timeout;
var onScroll = function() {
console.log('scrolling...');
if(timeout) {
clearTimeout(timeout);
timeout = null;
}
timeout = setTimeout(function() {
console.log('done scrolling... stop listening...');
$(window).off("scroll", onScroll);
clearTimeout(timeout);
timeout = null;
// aniamte scroll
console.log('start animating scroll...');
TweenMax.to($(window), 0.1, {scrollTo:{y:500}, onComplete:function(){
$(window).on("scroll", onScroll);
console.log('done animating scroll. Start litening again.');
}});
}, 500);
}
$(window).on("scroll", onScroll);
例如:http://codepen.io/rgbjoy/pen/RGVLBK?editors=0011
怎麼會這樣呢?我應該問量子理論家嗎?
感謝您在此深入挖掘。這可能是GSAP插件中的一個錯誤。我永遠都在盯着它。我喜歡使用GSAP插件,因爲我在其他動畫中使用它很多。 scrollTo插件聽起來非常好用,簡單易用... – Tom