2011-07-01 43 views
1

有沒有辦法覆蓋補間的屬性? 如果我寫mootools |覆蓋補間動畫而不會每次創建新補間

el.set('tween', {duration: ‘long’, onComplete: callback}); 

然後

el.set('tween', {duration: 200, onComplete: secondcallback }); 

我不能取代舊的屬性(回調再次觸發)

可以在不創建一個新的來解決這個問題Fx.Tween每次?

回答

2

每次在同一個實例設置onComplete時間,回調推並與相同的「完成」事件相關聯,每次回調將在事件被觸發後調用。

要 '取代' 的onComplete回調,您可以使用removeEvent,即

el.set('tween', {duration: ‘long’, onComplete: callback}); 

//and then... 

el.get('tween') 
    .removeEvent('complete', callback) 
    .addEvent('complete', secondcallback); 

演示=>http://jsfiddle.net/NNzQ7/

+0

完美,如果我想覆蓋持續時間或屬性的屬性? – Luke

+1

像持續時間這樣的屬性會在每次設置它時被覆蓋,所以你只需要做el.set('tween',{duration:newDuration}); – stecb

0

我會創建兩個獨立的補間,讓他們身邊:

var fx1 = new Fx.Tween(element, {onComplete: callback}); 
var fx2 = new Fx.Tween(element, {onComplete: anothercallback}); 

然後你可以單獨使用它們:

fx1.start('background-color', 'cyan', 'red'); 
fx2.start('background-color', 'red', 'cyan'); 
+0

這不是一個很好的做法,因爲mootools的提供一個Tween實例直接 '內部' 的元素,所以在OP報告的情況下,最好用removeEvent覆蓋補間實例的「完成」事件。 – stecb