Cocos2d x v3 x 序列幀動畫

2021-12-29 21:40:10 字數 1762 閱讀 6234

簡介cocos2d-x中,動畫的具體內容是依靠精靈顯示出來的,為了顯示動態,我們需要不停切換精靈顯示的內容,通過把靜態的精靈變為動畫**器從而實現動畫效果。動畫由幀組成,每一幀都是乙個紋理,我們可以使用乙個紋理序列來建立動畫。

我們使用animation類描述乙個動畫,而精靈顯示動畫的動作則是乙個animate物件。動畫動作animate是精靈顯示動畫的動作,它由乙個動畫物件建立,並由精靈執行。

建立方法

- 手動新增序列幀到animation類

- 使用檔案初始化animation類

手動新增

手動新增的方法需要將每一幀要顯示的精靈有序新增到animation類中,並設定每幀的**時間,讓動畫能夠勻速**。另外,還要通過`setrestoreoriginalframe`來設定是否在動畫**結束後恢復到第一幀。建立好animation例項後,需要建立乙個animate例項來**序列幀動畫。

複製**

在建立animation例項時會用到以下幾個介面:

- `addspriteframe`,新增精靈幀到animation例項

- `setdelayunits`,設定每一幀持續時間,以秒為單位

- `setrestoreoriginalframe`,設定是否在動畫**結束後恢復到第一幀

- `clone`,轉殖乙個該animation例項

檔案新增

首先我們來了解下需要用到的animationcache類。animationcache可以載入xml/plist檔案,plist檔案裡儲存了組成動畫的相關資訊,通過該類獲取到plist檔案裡的動畫。

在使用animationcache類時會用到以下幾個介面:

- `addanimationswithfile`,新增動畫檔案到快取,plist檔案

- `getanimation`,從快取中獲取動畫物件

- `getinstance`,獲取動畫快取例項物件

使用檔案新增的方法只需將建立好的plist檔案新增到動畫快取裡面,plist檔案裡包含了序列幀的相關資訊。再用動畫快取初始化animation例項,用animate例項來**序列幀動畫。

複製**

`注意:`3.0開始,cocos2d-x使用getinstance來獲取單例例項。

動畫快取(animationcache)

通常情況下,對於乙個精靈動畫,每次建立時都需要載入精靈幀,按順序新增到陣列,再建立對應動作類,這是乙個非常煩瑣的計算過程。對於使用頻率高的動畫,比如走路動畫,將其加入快取可以有效降低每次建立的巨大消耗。由於這個類的目的和快取內容都非常簡單直接,所以其介面也是最簡單了的,如下所示:

- static animationcache* getinstance(),全域性共享的單例

- void addanimation(animation *animation, const std::string& name),新增乙個動畫到快取

- void addanimationswithfile(const std::string& plist),新增動畫檔案到快取

- void removeanimation(const std::string& name),移除乙個指定的動畫

- animation* getanimation(const std::string& name),獲得事先存入的動畫

`建議:`在記憶體警告時我們應該加入如下的清理快取操作:

複製**

值得注意的是清理的順序,我們推薦先清理動畫快取,然後清理精[靈幀快取](最後是[紋理快取](按照引用層級由高到低,以保證釋放引用有效。

Cocos2d x v3 x 序列幀動畫

簡介 我們使用animation類描述乙個動畫,而精靈顯示動畫的動作則是乙個animate物件。動畫動作animate是精靈顯示動畫的動作,它由乙個動畫物件建立,並由精靈執行。建立方法 手動新增序列幀到animation類 使用檔案初始化animation類 手動新增 複製 auto animati...

Cocos2d x v3 x官方文件 序列幀動畫

簡介 我們使用animation類描述乙個動畫,而精靈顯示動畫的動作則是乙個animate物件。動畫動作animate是精靈顯示動畫的動作,它由乙個動畫物件建立,並由精靈執行。建立方法 1.手動新增序列幀到animation類 2.使用檔案初始化animation類 手動新增 auto animat...

Cocos2d x v3 x官方文件 序列幀動畫

簡介 我們使用animation類描述乙個動畫,而精靈顯示動畫的動作則是乙個animate物件。動畫動作animate是精靈顯示動畫的動作,它由乙個動畫物件建立,並由精靈執行。建立方法 1.手動新增序列幀到animation類 2.使用檔案初始化animation類 手動新增 auto animat...