當Tweener還未出現的時候

當我還小的時間,曾看過電腦雜誌的Flash教學,見過有人教用以下的formula做到easing的效果:

在EnterFrame的event中﹕

myMc.x += (targetX – myMc.x) / FACTOR;
//targetX 是目標的X座標
//FACTOR是一個constant,數字愈大,easing的時間愈長

可是這個方法有很多缺點:

  • 只做到減速效果
  • tweening時間不能控制
  • 令program更複雜

但當有人寫了Tweener這些tweening engine後,問題已不再存在了!

甚麼是Tweener

Tweener 是一個 open source 的 tweening engine(即是一系例的class),其主要功用就是可以利用actionscript動態地tween movieclip 的屬性,如x, y, scaleX, scaleY, alpha, width, height 等等。除此之外,你也可以用Tweener來tween object的屬性,如sound object的volume,textfield的座標,甚至是3D camera的位置等等,用途多不勝數。在之後的章節Stanley會介紹一些應用的例子。

大家都應該知道我們也可以用timeline制作transiton,但是用timeline卻有很大的限制:

  • timeline即是hardcode的,對於制作很具互動性的RIA根本是沒可能
  • timeline是frame-based的,即是如果timeline很複雜,Flash亦要每一個frame都畫出來,慢的電腦就會很不流暢,即是說播放時間不易控制
  • timeline會令你的movieclip結更複雜

但是用Tweener,情況就恰好相反了:

  • Tweener可以讓你動態地建立transition
  • Tweener是time-based的,比如說你建立了2秒的transition,無論是快或慢的電腦都可以2秒完成
  • Tweener是幫助你簡化movieclip的結構

總之,Tweener是一個可幫助你製作高互動性,流暢animation RIA不可或缺的工具。

Transition 的類型

Tweener的靈魂,就是它提供的transition types。Transition types是用來定義一個數值,是用甚麼的方法轉變到另一個目標數值,例如選用quadratic或是exponential的方式轉變。而物件移動或淡出淡入時都可以利用transition types建立easing,因而產生流暢的感覺。

下表就是Tweener提供的所有transition types:

Tweener 提供的transition types

Tweener 提供的transition types

詳情可以看 Tweener的文件:
http://hosted.zeh.com.br/tweener/docs/en-us/misc/transitions.html

* 其實這些Tweening forumula是由一位叫Robert Penner所創立的,有興趣可以看看他的網頁。他可是一位非常利害的人呢!
http://robertpenner.com/

比較其他Tweening Engine

其實除了Tweener外,還有很多其他的engine,如:

  • TweenLite
  • Boostworthy Animation System
  • FuseKit
  • Go
  • KitchenSync

這些engine都各有特性,如果有興趣,可以看看它們的pros and cons呢。
http://dispatchevent.org/wp-content/uploads/2008/04/Tween-Engine-Comparisons.pdf

>> Lesson 3: Tweener 語法實習

  • Facebook
  • Twitter
  • del.icio.us
  • Digg
  • Google Bookmarks
  • Yahoo! Buzz
  • Live
  • RSS