2012-08-24 34 views
2

我正在使用MooTools,並且我有下面的代碼,我似乎無法執行。我期待它將#bar元素的寬度增加到50px,然後alert()帶有「hi!」,然後繼續將#bar的寬度增加到200px。無論出於何種原因,它會在「嗨!」之後停止。並不會繼續執行。這是怎麼回事?MooTools鏈式函數不會執行

var myFx = new Fx.Tween($('bar'), { 
duration: '500ms', 
transition: 'sine:out', 
link: 'chain' 
}); 

myFx.start('width', '50').chain(
function() { alert('hi!'); }, 
function() { myFx.start('width', '200'); } 
); 

Fiddle

回答

7

那是因爲你的第二功能不會調用myFx類的方法 - 這意味着,它不會提前鏈。

鏈是混入Fx類。如果你做動畫,它會自動嘗試到callChain。因爲你什麼都不做,在警報下面加上這個:

this.callChain(); 

這會正常工作。也許文件需要改變,因爲它現在不明顯。 http://jsfiddle.net/dimitar/nUWsU/8/

+0

真棒,是的,這是有道理的。我曾經想知道是否是這種情況(我試過一些函數,如果它們是'myFx.start()'變體),但它們只能通過它們運行,但無法確定。雖然我有你的號角,如果我問另一個問題,你介意嗎? Fx.Tween是否支持CSS3樣式,比如'border-radius','box-shadow'等等?他們似乎也不適合我。 – Funktr0n

+1

不是atm。我會建議做一個沒有Fx的自定義版本的Mootools,而是捆綁Moo.Fx - 例如http://mootools.net/blog/2012/08/13/optimizing-mootools-builds-sans-internet-explorer/ - 或者抓取從kamicane的回購。它的主要(摩托2),但也是獨立的。否則,你可以使用像這樣的東西https://github.com/DimitarChristoff/baseBox/blob/master/Source/baseBox.js#L26-45來擴展道具的Fx.CSS解析器 - 或者查看Forge,http ://mootools.net/forge/browse?search=css3(通過css3 if poss)或http://mootools.net/forge/p/fx_css進行簡單的道具解析。 –

+0

少數優秀的資源和偉大的想法!非常感謝! :) – Funktr0n