2013-02-04 27 views
1

我想利用jQuery的隊列,以便爲執行一系列的功能。這些「排隊」功能,實際上是在頁面周圍製作動畫。創建動畫隊列參數

,這是我建立我的隊列原代碼:

this.queue = function(fx, params) { 
    this.animation_queue.push({fx: fx, params: params}); 
}; 

然後,一旦所有功能都排隊,我使用它是這樣的:

this.animate = function() {  
    for(var i=0; i<this.animation_queue.length; i++) { 
     this.animation_queue[i].fx.apply(this, [this.animation_queue[i].params]); 
}}; 

的問題,很明顯,我碰到的是隊列元素沒有正確執行。雖然他們按順序執行,因爲每個函數都執行動畫,但實際上我需要在上一個元素的動畫完成後執行每個隊列元素。

我看着中使用jQuery隊列,像這樣:

this.queue = function(fx, params) { 
    this.animation_queue.delay(500, 'animations'); 

    this.animation_queue.queue('animations', function(next) { 
     next(); 

    }); 
}; 

但我不知道我怎麼能叫我作爲我以前那樣,用參數。

我如何才能做到這一點有什麼建議?

回答

0

據商務部:

http://api.jquery.com/queue/

您不必擔心建設和管理自己的隊列,隊列由jQuery的管理調用隊列中的元素上的那一刻。

這裏是他們的榜樣的小提琴是非常有效:

http://jsfiddle.net/7GxwR/

因此,爲了您的動畫喂到隊列中,只需創建一個單一的功能,將疊加到所有的動畫元素,然後在元素上調用.queue(...)以強制它在隊列中執行。

如果您想要動態更改/構建隊列,您需要停止所有動畫,請使用循環遍歷動態JSON對象的數組來構建runIt函數,該對象存儲動畫參數和時序,然後請撥打showItrunIt,如jQuery API中的小提琴和示例所示。

的基本點是在這裏,不建立自己的隊列/數組,jQuery將如果調用隊列中的元素與已經應用多種效果爲你做這個。

希望這會有所幫助。

+0

你撥弄鏈接似乎被打破。 – Genu

+0

修復它,抱歉。 – mattdlockyer