2009-05-30 90 views
5

我想盡可能平滑地爲MoviveClips/Sprite對象製作動畫。但是到目前爲止,唯一可行的方法是將移動代碼放入EnterFrame事件處理程序。這種方法存在一個問題:當特定機器上的幀率低於期望的幀率時,整個遊戲變慢。我希望能夠以一種與時間無關的方式做到這一點。ActionScript 3:流暢的編程動畫

回答

12

有兩種方法可以在Flash播放器中執行程序化動畫。第一個你已經使用onEnterFrame指出的。但是,正如您可能已經注意到的,要獲得流暢的動畫,您需要提高電影的整體幀率。這樣做也會增加SWF運行整個時間段的CPU負載。這不是你總想要的。

進行編程動畫的另一種方式是使用計時器。在一個定時器處理程序中,可以調用一個名爲updateAfterEvent的函數,該函數將更新獨立於您爲SWF設置的FPS的屏幕。因此,使用計時器可以讓網關在Flash播放器中執行流暢的動畫,而不會增加SWF的整體幀速率。

兩年前,我開始爲Flash創建自己的補間庫(因爲我對現有的補間庫有任何疑惑)。我以名稱Coretween發佈它,此庫允許您選擇哪種類型的動畫更喜歡每個單獨的補間。在文檔頁面上,我給出了基於幀和基於時間的動畫之間差異的example。該頁面上的SWF示例運行速度爲12 fps,但您可以看到,較低的圓圈補間更平滑,因爲它由60 fps的計時器控制,並根據SWF幀速率更新屏幕。請記住,即使計時器在60 fps時刻滴答,實際上Flash Player將永遠無法達到此幀速率。但是,它會嘗試實現這種幀速率,從而導致整體動畫更平滑。

不幸的是,直到現在我還沒有能夠發佈我的庫的1.0版本,但據我所知它非常穩定。歡迎您以任何您認爲合適的方式使用它。我曾在許多商業作品中使用過Coretween,包括我們在澳大利亞爲StGeorge銀行所做的一個。

+0

太棒了!正是我需要的。我會等待接受,所以你可以得到更多upvotes :) – George 2009-05-31 00:58:05

2

這裏有一些基於ActionScript動畫庫:

TweenMax

Tweener

他們都很好地工作,並幫助你完成你所需要的。

+0

不幸的是,因爲我需要實時平滑控制我的對象。 Tweener方法,保證有時在未來對象將到達其所需的位置是「ungood」。 – George 2009-05-30 14:47:59