原文地址:http://www.jackslocum.com/blog/2006/08/24/javascript-animations-with-yahoo-ui-made-easy/
YUI的動畫類簡直就是一門藝術工作。不像其它的傳統的JS庫,提供了已經“預設好”的直接可運行的效果,相反,它由開發者做自己喜歡的。在這點,我比較喜歡適當地運行一些動畫和變換效果,越多越好。
按照這么地說,也會有個問題。動畫API是非?!暗讓印钡墓ぷ?而且需要您花時間去弄的,子類的構建函數會又長又啰嗦的。因此,在上一發布的版本中, 我把 YAHOO.ext.Element的動畫效果盡量簡單地調用。其實,在這個網站的大多數效果都是它完成的。但如果我想做些較復雜的效果,該怎么辦?當某個效果完成后,YUI能夠以函數的方式提供一個回調(callback).利用Callback你能夠將多個效果排隊來做出復雜的效果。唯一的問題是,在其函數內,每一步效果的封裝好的,這樣,代碼起來就很復雜可怕了。另外一個問題是,當你同一時內多個元素發生動畫效果的話,代碼會持續地隨著每個元素它擁有的回調函數的增長而增長。不得不說,YahooUI!在這方面,有點難以適用于開發,--尤其日漸常用這類效果。
新版的yui.ext包含了原本yui做動畫所需的復雜代碼,甚至比你想的要簡單。這里是功能列表:
*自動調整動畫順序 --回調函數不再有啦!
* 處理多個元素的動畫更方便,--只要設置一下屬性。* 對多個元素的動畫效果,自動同步和調整順序 --只要添加 Actors到一個 Animator 就可以同步。 * 一些常用的預設效果(盡管yui不會引起內存泄漏,但切勿替換、復制script.aculo.us那炫目的效果【 譯者frank注:這里是反語,諷刺script.aculo.us會內存泄漏)】* 允許動畫過程中執行任何的函數。*允許動畫過程中調用自動調整的同步函數。*動畫列表(一組的動畫效果)可按需預定義和執行
好,讓我們看看進入代碼部分以id為example的div新建一個actor對象。第三個參數真告訴它立即開始捕捉動作(否則的話你必須調用startCature()) 如果是false則是一個標準的元素對象,同時執行所有調用。var exdiv = new YAHOO.ext.Actor('example', null, true);產生一個從上移動下來的效果:
exdiv.moveIn('top');播放動畫:
exdiv.play();
var anim = new YAHOO.ext.Animator(this.minbar, this.dockbar);開始動畫:
anim.startCapture();
this.dockbar.setX(-this.dockedWidth);
this.dockbar.setWidth(this.dockedWidth);
this.dockbar.setVisible(true);
新聞熱點
疑難解答