您正在創建一個無限循環。你故意這樣做,但其運行速度比你想象的要快得多。 complete
需要函數參考。通過將回調函數添加到回調函數的名稱中,您立即調用aniPointer
,並將返回值傳遞給complete
,而不是傳遞對aniPointer
本身的引用,以便稍後再觸發。
即便如此,這個序列真的是你想要做的嗎?
你這樣做:
go to 1.0 over 300ms
go to 0.2 over 700ms
go to 0.2 over 300ms
go to 1.0 over 300ms
repeat
假設你開始在1.0這實際上是:
wait 300ms
go to 0.2 over 700ms
wait 300ms
go to 1.0 over 300ms
repeat
如果你正在尋找一個穩定的脈搏,你可以做這樣的事情:
function pulse($elem) {
return window.setInterval(function() {
$elem.animate({opacity: 0.2}, 700)
.animate({opacity: 1.0}, 300);
}, 1000);
}
或者,如果你有意暫停你可以這樣做:
function pulse($elem) {
return window.setInterval(function() {
$elem.animate({opacity: 0.2}, 700);
window.setTimeout(function() {
$elem.animate({opacity: 1.0}, 300);
}, 1000);
}, 1600);
}
返回值將允許你,如果你想要像現在這樣停止動畫:
var pulseIntervalId = pulse($('#arrow_id'));
//some time later...
window.clearInterval(pulseIntervalId);
兩個版本將裙子的無限循環問題,讓回調有參考脈衝元素而不被過早引用。
哇,我真的不能要求爲更詳細的答案! – Jigs 2010-07-16 20:45:00
哈,我希望它能起作用! GL。 – jasongetsdown 2010-07-16 20:47:34