http://spritely.net/のライブラリを使用してアニメーションを作成しようとしています。.onscroll() を使用してトリガーしていますが、スクロールイベントの発生を頻繁に停止するのに苦労しており、.onscroll() によって毎秒何度も開始するように呼び出されるため、アニメーションの速度が速すぎます
現在の時間に応じて変数を設定することで、初めてスクロールするときにスクロールイベントの発生を頻繁に停止できます
後続のスクロール イベントの遅延を維持できません。スクロールするたびに変数の効果が低下します。
スクロールイベントごとにスクロールがアニメーションを1回だけ開始するようにするにはどうすればよいですか? デモは こちら http://jsfiddle.net/fGmbe/109/
コードはこちら
var t, l = (new Date()).getTime(), scrolling = false;
$(window).scroll(function(){
var now = (new Date()).getTime();
if(now - l > 800 && !scrolling ){
$('#bird').sprite({fps:6, no_of_frames: 16, rewind: true });
l = now;
}
clearTimeout(t);
t = setTimeout(function(){
if (!scrolling)
$('#bird').spStop()
}, 300);
});
var a, b = (new Date()).getTime(), scrolling = false;
$(window).scroll(function() {
var nw = (new Date()).getTime();
if(nw - b > 800 && !scrolling ){
$('#bird').spStart({fps:8, no_of_frames: 16, rewind: true })
l = nw;
}
});
var c, d = (new Date()).getTime(), scrolling = false;
$(window).scroll(function() {
var nx = (new Date()).getTime();
if(nx - d > 800 && !scrolling ){
$('#bird').spStart({fps:8, no_of_frames: 16, rewind: true })
l = nx;
}
});