cocos2d-x-4.0 學習筆記-3: spine骨骼動畫


  cocos2dx中集成了spine骨骼動畫的功能,可以通過.atlas、.json、.png三個文件來生成骨骼動畫。

1.使用spine前的准備

  我們在www.cocos.com中下載的cocos2d-x-4.0引擎中默認使用的spine是舊版的C風格的,且引擎在創建工程后CMAKE構建工程時默認關閉了spine,舊版4.0引擎即使開啟了spine但在編譯的時候仍然會出錯,所以我們需要通過以下幾個步驟來升級引擎中的spine模塊。

1.1 下載新版引擎源碼

  https://github.com/cocos2d/cocos2d-x

  去github上下載最新的源碼,下載下來后解壓,打開文件夾:

  先嘗試運行download-deps.py,看能否下下來依賴包,不過由於網絡原因應該是下不下來,我就是沒有下載下來所以才通過其他途徑實現。如果能完成新引擎的安裝配置的話直接就使用新版的引擎構建工程,之后的步驟就都可以跳過。

1.2移植源碼到原引擎

  如果無法完成新引擎的安裝的話,就需要把新引擎的源碼中的spine部分移植到之前我們在官網中下載的引擎當中,spine源碼的路徑在cocos/editor-support/spine里,打開后如圖所示:

 

 我們復制所有此文件夾下的內容,將我們原來的引擎的這個文件夾中的內容清空后再粘貼進來。

1.3在cmakelist中開啟spine模塊

  在原引擎目錄下的cocos文件夾中有一個CMakeList文件,打開它后搜索spine,會看到如下圖所示內容:

 

   將該行后面的OFF改為ON,保存退出。

1.4構建工程

  然后使用引擎去構建工程,此時得到的工程就是集成了C++風格spine模塊的工程了。

 

2.創建骨骼動畫

  使用骨骼動畫需要在頭文件中包含#include<spine/spine.h>,#include<spine/spine-cocos2dx.h>。

1. 直接創建骨骼動畫

1     auto dragonanimaion = SkeletonAnimation::createWithFile("C:/dragon.json", "C:/dragon.atlas");//通過.json和.atlas兩個文件創建骨骼動畫
2     dragonanimaion->setAnimation(0, "flying", 1);//設置骨骼動畫狀態
3     dragonanimaion->setPosition(0,0);
4     this->addChild(dragonanimaion, 1);

  這種方法是最簡單的創建骨骼動畫的方法,但花費的時間較長,構造動畫語句在運行時花費了70ms的時間,這對於一個游戲來說時不可接受的,所以要對動畫進行預加載。

2. 預加載后創建骨骼動畫

  通過對SkeletonAnimation::createWithFile()函數源碼的觀察我們得到了如下的方法來創建一個骨骼動畫數據

1     TextureLoader* textureLoader = new Cocos2dTextureLoader();
2     auto _atlas = new (__FILE__, __LINE__) Atlas("C:/dragon.atlas", textureLoader, true);//加載.atlas
3     auto _attachmentLoader = new (__FILE__, __LINE__) Cocos2dAtlasAttachmentLoader(_atlas);
4     SkeletonJson json(_attachmentLoader);
5     json.setScale(1);
6     SkeletonData* skeletonData = json.readSkeletonDataFile("C:/dragon.json");//加載.json后得到骨骼動畫數據

   在游戲的loading界面將我們所要使用的骨骼動畫用上述方法預加載后,使用時調用SkeletonAnimation::createWithData(skeletonData)就可以創建出動畫,所使用的時間小於1ms,這樣在游戲過程中創建動畫就不會導致幀率降低了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM