cocos2d x學習筆記04 簡單動畫

2021-09-05 07:17:49 字數 1857 閱讀 8826

本文主要展示了cocos2dx的動畫例項**,該例子在test的spritetest中。我將其單獨抽出來。

需要說明的是:因為cocos2d-x是通用遊戲引擎,為了保證相容性和易用性,對動畫機制作了最簡單的設計(被做成了乙個action)。但代價就是繪製動畫的**可能比較多,如果在實際開發中,一般都要選擇自己封裝。

這裡只給出最基本的動畫**,具體使用要根據實際情況自己封裝。最好自己開發乙個編輯器。額外說一句,開發編輯器最好使用qt,因為是跨平台的。

我們隨便找一張動畫資源,在66rpg裡有很多,如圖:

#1 動畫**

ccsize s = ccdirector::shareddirector()->getwinsize(); 

//#1:生成動畫需要的資料類

cctexture2d *texture=cctexturecache::sharedtexturecache()->addimage("pic2476.png"); 

ccspriteframe *frame0=ccspriteframe::framewithtexture(texture,ccrectmake(32*0, 48*0, 32, 48)); 

ccspriteframe *frame1=ccspriteframe::framewithtexture(texture,ccrectmake(32*1, 48*0, 32, 48)); 

ccspriteframe *frame2=ccspriteframe::framewithtexture(texture,ccrectmake(32*2, 48*0, 32, 48)); 

ccspriteframe *frame3=ccspriteframe::framewithtexture(texture,ccrectmake(32*3, 48*0, 32, 48)); 

ccmutablearray*animframes = new ccmutablearray(4); 

animframes->addobject(frame0); 

animframes->addobject(frame1); 

animframes->addobject(frame2); 

animframes->addobject(frame3); 

ccanimation *animation = ccanimation::animationwithframes(animframes, 0.2f); 

animframes->release();  

//#2:初始化並設定sprite

ccsprite *sprite = ccsprite::spritewithspriteframe(frame0);//設定乙個初始frame

sprite->setposition( ccp( s.width/2, s.height/2) ); 

addchild(sprite); 

//#3:使用animation生成乙個動畫動作animate

ccanimate *animate = ccanimate::actionwithanimation(animation, false); 

注意,cocos2dx不支援使用clip的動畫,另外,clip動畫的開發成本很高,在智慧型手機這種大記憶體的平台是否適用(犧牲記憶體換開發速度麼?),值得商量。

繪製效果如圖:

#2 相關的類關係圖

簡單過程是,使用

cctexture2d

載入 ,用cctexture2d生成對應的ccspriteframe(對應的就是幀),將

ccspriteframe新增到

ccanimation生成動畫資料,用ccanimation生成ccanimate(就是最終的動畫動作),最後用ccsprite執行這個動作。

Cocos2d x學習筆記1

1.建立新的cocos2d x 3.0 專案 在命令列中輸入 cocos new helloworld 專案名稱 p com.ss.pku 包名字 l cpp 專案型別 d d cocos workspace 專案存放路徑 2.資料夾分析 resource 資料夾 存放資源檔案 include和so...

Cocos2d x學習筆記(7)

1 動作基本概念 ccactiong是動作類的基類,動作作用於ccnode,因此,任何乙個動作都需要ccnode物件來執行。ccaction作為乙個基類,其實質是乙個介面 抽象類 由它派生的實現類才是實際使用的動作。ccaction的絕大多數實現類都派生自ccfinitetimeaction,這個類...

Cocos2d x動作學習筆記

action類如其名,它可以改變node物件的屬性,action物件是隨著時間改變node的屬性。任何乙個以node為基類的物件都有可執行的動作物件。例如,你可以在乙個時間段內將sprite精靈從乙個位置移動到另乙個位置。每個動作都有by和to兩個狀態。為什麼呢?因為它們所執行的結果是不同的。by相...