您好,登錄后才能下訂單哦!
大家好,在這里我想分享一下CocoStudio的動畫編輯器幀事件,以及在代碼里面如何調用CocoStudio動編,關于基礎的CocoStuio方法請查看CocoStudio的基礎視頻.還有我是第一次寫博客如果有什么地方寫錯了,請多多指點.
在講解骨骼動畫的幀事件之前我想說一下基礎視頻里面的CocoStudio里面的動畫編輯器跟現在最新版的動畫編輯器之間的區別,最新版的動畫編輯器有2個模式.一個是形體模式,另一個是動畫模式,在最新版本中我們需要在形體模式下構建骨骼動畫,然后再動畫模式下編輯,而基礎視頻中的教程是不區分動畫模式與形體模式的.
就介紹到這里我們進入正文.什么是幀事件?幀事件就是當我播放動畫時當到達一定幀數以后可以觸發一些額外的事情.比如說當我播放一個×××手開槍的動畫我可以把當×××手把槍抬起的時候發射×××,然后把槍放回去.如果想觸發幀事件需要在CocoStudio的動畫模式下的指定幀上面定義一個名稱,如下圖
接下來導出該項目后來看看在C++代碼里面是如何調用的吧,對了我在這里使用的是Cocos2dx3.0Bata2,關于Cocos2dx2.x的會在明后天制作.用Cocos2dx3.x版本時需要先導入一下Lib文件,如圖
cocos\editor-support\cocosbuilder\proj.win32,與cocos\gui\proj.win32將這兩個導入進來。然后再你的項目上點右鍵屬性包含代碼
就可以在代碼里使用CocoStudio的項目了。
這里是我的Demo
#include "cocostudio/CocoStudio.h" using namespace cocostudio; //因為我導出CocoStudio項目時生成了2個Png跟plist文件所以加載了2次 ArmatureDataManager::getInstance()->addArmatureFileInfo("DemoPlayer0.png","DemoPlayer0.plist","DemoPlayer.ExportJson"); ArmatureDataManager::getInstance()->addArmatureFileInfo("DemoPlayer1.png","DemoPlayer1.plist","DemoPlayer.ExportJson"); //切忌這是CocoStuio的項目名稱 auto pAni = Armature::create("DemoPlayer"); pAni->getAnimation()->playWithIndex(0); //這里是播放第幾個動畫。 pAni->setPosition(Point(visibleSize.width*0.5f,visibleSize.height*0.5f)); pAni->setScale(0.75f); this->addChild(pAni,10);
現在來設置幀回調首先聲明一個回調函數
void onFrameEvent(Bone *bone, const std::string evt, int originFrameIndex, int currentFrameIndex);//在頭文件中聲明 //在Cpp中實現 void HelloWorld::onFrameEvent( Bone *bone, const std::string evt, int originFrameIndex, int currentFrameIndex ) { if(evt == "kaihuo"){ log("Fire"); } } //在構建骨骼動畫時聲明幀事件回調 pAni->getAnimation()->setFrameEventCallFunc(this,frameEvent_selector(HelloWorld::onFrameEvent));
CocoStudio的幀事件回調就這么簡單大家試試把. 我是第一次寫博客那里寫錯了請多多指點.
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。