Cocos2d x v3 x 序列幀動畫

2021-06-27 08:43:22 字數 2155 閱讀 6193

簡介

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

建立方法

- 手動新增序列幀到animation類

- 使用檔案初始化animation類

手動新增

複製**

auto animation = animation::create();

for( int i=1;i<15;i++)

;sprintf(szname, "images/grossini_dance_%02d.png", i);

animation->addspriteframewithfile(szname);

}// should last 2.8 seconds. and there are 14 frames.

animation->setdelayperunit(2.8f / 14.0f);

animation->setrestoreoriginalframe(true);

auto action = animate::create(animation);

_grossini->runaction(sequence::create(action, action->reverse(), null));

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

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

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

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

檔案新增

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

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

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

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

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

複製**

auto cache = animationcache::getinstance();

cache->addanimationswithfile("animations/animations-2.plist");

auto animation2 = cache->getanimation("dance_1");

auto action2 = animate::create(animation2);

_tamara->runaction(sequence::create(action2, action2->reverse(), null));

`注意:`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),獲得事先存入的動畫

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

複製**

void releasecaches()

值得注意的是清理的順序,我們推薦先清理動畫快取,然後清理精[靈幀快取](

),最後是[紋理快取](

)。按照引用層級由高到低,以保證釋放引用有效。

Cocos2d x v3 x 序列幀動畫

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

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...