亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

cocos2d-x 3.8.1的骨骼動畫加載方法addArmatureFileInfo仍然存在問題

2019-11-11 03:08:59
字體:
來源:轉載
供稿:網友

提出如題所示的問題,心里非常別扭,但的確是事實。因此,Cocos Studio(我目前使用的是 2.3.2)在許多方面還有改進的地方,包括與之相對應的cocos2d-x中的代碼操作部分。

   

問題

        目前,我的試驗結果發現,使用cocos2d-x 3.8.1中提供的如下方法:

1ArmatureDataManager::getInstance()->addArmatureFileInfo(filename);

        無法正常加載Cocos Studio 2.3.2導出的骨骼動畫資源文件。例如如下代碼無法正常通過項目構建:

1ArmatureDataManager::getInstance()->addArmatureFileInfo("DemoPlayer.csb");

令人遺憾的例子

 

盡管如此,但是cocos2d-x 3.8.1的cpp-tests實例中的確提供了使用addArmatureFileInfo方法加載.csb骨骼動畫文件的例子?。?/p>

 

是的,因為.csb文件是二進制格式,目前還找不到其反編譯工具,但是,從使用簡單的工具分析,cpp-tests實例中提供的示例.csb骨骼動畫文件的版本與Cocos Studio 2.3.2導出的骨骼動畫資源文件.csb并不一致。

 

下面給出Notepad++觀察到的結果圖的對照(第1張是Cocos Studio 2.3.2導出骨骼動畫文件DemoPlayer.csb查看結果,顯然版本號是2.1.0.0,第2張是cpp-tests實例中提供的示例Cowboy.csb骨骼動畫文件查看結果,顯然版本號是1.0.1):

 

wKioL1ZLIqGBpW75AALR_GQJDyo639.jpg

 

wKiom1ZLIxmC3MHpAAQDiObULoI450.jpg

 

為了進一步分析上述問題,我還專門把cocos2d-x 3.8.1的cpp-tests實例中提供的使用addArmatureFileInfo方法加載其提供的相應.csb骨骼動畫文件的代碼復制到一個簡單示例工程中進行測試,的確OK。相關代碼如下所示:

1234567891011const  char* HelloWorld::m_binaryFilesNames[4] = { "bear.csb""horse.csb","Cowboy.csb","ccc.csb"};const  char* HelloWorld::m_armatureNames[4] = { "bear""horse","Cowboy","Skeleton1"};//...... // load from binary ArmatureDataManager::getInstance()->addArmatureFileInfo(m_binaryFilesNames[3]); Armature *m_armature = Armature::create(m_armatureNames[3]); m_armature->getAnimation()->playWithIndex(0); m_armature->setScale(1.0f); Size size = Director::getInstance()->getWinSize(); m_armature->setPosition(size.width/2, size.height/2); addChild(m_armature);

對于數組中相應的前三個.csb文件(應該是老版本的STUDIO導出的骨骼動畫csb文件),運行上述代碼非常順利(當然,上述addArmatureFileInfo方法調用更早的ExportJson骨骼動畫文件的情況也是能夠順利運行)。事實上,cpp-tests自然也已經在我的機器上順序調試通過(我的環境是Windows 7 64bits Visual Studio 2013)。但是,對于最后那個csb文件(使用當前新版本Cocos Studio 2.3.2導出的骨骼動畫文件),則根本不行,執行中斷停止在addArmatureFileInfo調用的下一行。

 

在經過部分的源碼跟蹤后,我嘗試著使用碎圖技術生成csb文件,盡量使之與cpp-tests提供的文件形式上一致,結果也根本通不過!

 

太遺憾了,我就是想使用Armature及相應的如下技術:

1   armature->getAnimation()->setMovementEventCallFunc(CC_CALLBACK_0(TestAnimationEvent::animationEvent, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));

但是,很遺憾,只能干瞪眼!沒有Armature,我們根本無法使用setMovementEventCallFunc回調函數及其相應技術了。

 

遺憾的是,對于上述問題,官方網站上及DEMO中只字未提!

 

變通辦法

 

對于我目前的程序中的上述要求,我只能嘗試著其他的變通方法,因為我的要求也并不高。于是我嘗試著使用幀事件方法解決了上述問題。

 

在此,我粘貼上我的示例游戲中的相關代碼。

第一部分如下:

1234567891011121314151617 //2load title and mushroom animation  Node* node2 = CSLoader::createNode("SplashAnimationSkeleton.csb");  addChild(node2);  node2->setPosition(Vec2(VisibleRect::center().x, VisibleRect::center().y));  //在cocos studio設計器中選擇是否循環播放,對于在代碼中動畫的是否循環播放沒有影響?。?!//  ActionTimeline* action2 = CSLoader::createTimeline("SplashAnimationSkeleton.csb");  node2->runAction(action2);  action2->gotoFrameAndPlay(0,false);  action2->setFrameEventCallFunc(CC_CALLBACK_1(SplashScene::onFrameEvent, this));

 

注意,上面的SplashAnimationSkeleton.csb是使用cocos studio 2.3.2創建的簡單的骨骼動畫文件。

 

我原先設計的使用setMovementEventCallFunc方法結合Armature數據想實現的是目標是:當骨骼動畫播放結束,觸發另一個既定事件,并在這個事件中完成另外的動畫播放任務。

 

對于上述目標,使用幀事件應該是可以的,只是稍微麻煩一些罷了。例如,需要在studio設計器中填寫幀事件數據;但是,總算還可以實現。

另外一部分相關代碼如下:

12345678910111213141516171819202122void SplashScene::onFrameEvent(Frame* frame){ EventFrame* evnt = dynamic_cast<EventFrame*>(frame); if (!evnt)  return; std::string str = evnt->getEvent(); if (str == "lastFrame") {  Node* butterfly_01 = CSLoader::createNode("ButterflyArmature_01.csb");  addChild(butterfly_01,100);  butterfly_01->setPosition(Vec2(VisibleRect::right().x + 100, 0));  ActionTimeline* action2 = CSLoader::createTimeline("ButterflyArmature_01.csb");  butterfly_01->runAction(action2);  action2->gotoFrameAndPlay(0, true);  Node* p1 = _rootLayer->getChildByName("Mushroom_Point");  auto  action = Sequence::create(   MoveTo::create(2, p1->getPosition()),   CallFunc::create(CC_CALLBACK_0(SplashScene::callback0, this)),   nullptr);  butterfly_01->runAction(action); }}

大家看到,我在幀事件回調函數中進行判斷,當動畫播放到特定幀時(正是我以前要求的第一個動畫播放結束時)觸發另一個蝴蝶飛入動畫的播放。 

小結一下

 

通過學習與研究部分cocos2d-x 及cocos studio最新版本技術可以學習到更優秀的開發技術的同時,注定我要犧牲許多時間去“踏坑”,也許有得就有失吧。

最后,再提醒一下新手同學,示例工程中的代碼部分與資源數據文件部分都有些不太明確的調用,當然,看起來官方是要盡量使用最新的c++代碼來使用(或者說保護)早期studio導出的資源。但在同時,卻露出了不少急于求成的“馬腳”。

登錄樂搏學院官網http://www.learnbo.com/

或關注我們的官方微博微信,還有更多驚喜哦~

本文出自 “青峰” 博客,請務必保留此出處http://zhuxianzhong.blog.51cto.com/157061/1713824


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩国产欧美区| 日韩欧美第一页| 国产精品白丝jk喷水视频一区| 欧美色视频日本高清在线观看| 国产视频精品自拍| 国产盗摄xxxx视频xxx69| 国产欧美精品一区二区三区-老狼| 中文字幕久热精品在线视频| 午夜精品一区二区三区在线视频| 亚洲第一中文字幕在线观看| 欧美极品第一页| 亚洲自拍偷拍色片视频| 国产精品久久久久久久久久小说| 亚洲免费视频网站| 久久91亚洲精品中文字幕| 欧美一级大片在线免费观看| 午夜精品一区二区三区在线视| 欧洲亚洲在线视频| 在线观看欧美日韩国产| 成人国产在线激情| 国产美女主播一区| 亚洲欧洲激情在线| 国产欧美久久一区二区| 91成人在线观看国产| 黄色91在线观看| 亚洲自拍欧美另类| 欧美猛男性生活免费| 91在线观看免费高清完整版在线观看| 欧美午夜精品在线| 97久久伊人激情网| 国产精品久久久久久久久久久久久久| 亚洲国产福利在线| 欧美一级高清免费| 国产精品久久久一区| 丝袜亚洲欧美日韩综合| 狠狠躁夜夜躁人人爽天天天天97| 国产精品91久久久| 国产在线观看一区二区三区| 91老司机精品视频| 中文在线不卡视频| 中文字幕亚洲专区| 91色视频在线导航| 色综合视频一区中文字幕| 高清欧美性猛交xxxx黑人猛交| 中文字幕日韩在线视频| 欧美精品videossex性护士| 亚洲欧美另类人妖| 亚洲精品短视频| 国产视频精品一区二区三区| 亚洲欧美日韩视频一区| 成人免费福利视频| 久久在线观看视频| 在线精品视频视频中文字幕| 亚洲国产日韩欧美在线动漫| 亚洲欧美国产日韩天堂区| 久久亚洲精品国产亚洲老地址| 国产精品揄拍500视频| 欧美激情喷水视频| 最近2019中文免费高清视频观看www99| 色偷偷噜噜噜亚洲男人| 久久久av免费| 亚洲精品影视在线观看| 美女国内精品自产拍在线播放| 91九色单男在线观看| 欧美与黑人午夜性猛交久久久| www欧美xxxx| 伊人久久男人天堂| 97香蕉久久超级碰碰高清版| 伊人伊成久久人综合网站| 91精品国产自产在线老师啪| 亚洲综合大片69999| 国产玖玖精品视频| 久久久久久久久亚洲| 国产欧美亚洲视频| 久久免费视频在线| 国产精品成人av在线| 欧美一级淫片丝袜脚交| 久久成人这里只有精品| 国产精品美乳在线观看| 国产成人精品一区二区在线| 国产综合福利在线| 亚洲人成网站免费播放| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产精品视频1区| 国产精品视频26uuu| 俺去啦;欧美日韩| 日韩精品视频在线观看网址| 国产精品www| 日韩电影免费在线观看中文字幕| 亚洲精品女av网站| 日韩理论片久久| 精品国产91久久久久久| 在线视频欧美性高潮| 久久久999国产精品| 精品欧美aⅴ在线网站| 日韩成人激情影院| 国产97在线|亚洲| 青青久久av北条麻妃黑人| 国产日韩在线亚洲字幕中文| 91久久中文字幕| 亚洲欧美日韩中文视频| 黄色91在线观看| 亚洲最大的免费| 国产欧美一区二区三区视频| 国产日韩欧美中文| 欧美大码xxxx| 中文字幕欧美亚洲| 亚洲女人天堂成人av在线| 91精品国产91久久久久久吃药| 日韩av一区二区在线观看| 亚洲sss综合天堂久久| 日韩av不卡在线| 欧美精品国产精品日韩精品| 欧美刺激性大交免费视频| 国产美女久久精品| 亚洲精品色婷婷福利天堂| 992tv成人免费影院| 亚洲一区二区三区在线免费观看| 国产欧美在线视频| 国产精品ⅴa在线观看h| 欧美激情国产精品| 亚洲精品美女网站| 国产成人精品视频在线| 国产精品美女无圣光视频| 美女精品视频一区| 久久婷婷国产麻豆91天堂| 国产精品h片在线播放| 1769国产精品| 亚洲三级av在线| 搡老女人一区二区三区视频tv| 国产亚洲精品美女久久久| 亚洲最新av在线网站| 亚洲天堂av综合网| 91人人爽人人爽人人精88v| 精品无人区乱码1区2区3区在线| 欧美电影免费观看高清| 欧美日韩在线免费观看| 日韩一区二区福利| 热久久99这里有精品| 亚洲精品二三区| 精品久久久久久久久国产字幕| 亚洲精品v欧美精品v日韩精品| 91在线看www| 国产欧美日韩视频| 精品高清美女精品国产区| 欧美极品美女视频网站在线观看免费| 亚洲**2019国产| 欧美成人午夜免费视在线看片| 91黄色8090| 琪琪亚洲精品午夜在线| 欧美另类精品xxxx孕妇| 秋霞av国产精品一区| 欧美久久精品午夜青青大伊人| 国产精品中文字幕久久久| 欧美人交a欧美精品| 国产精品午夜视频| 亚洲欧美中文日韩在线v日本| 欧美性高跟鞋xxxxhd| 欧美性猛交xxxx免费看久久久| 久久久久久久久久国产精品| 日韩精品免费综合视频在线播放| 国产精品极品在线| 国外成人在线播放| 国产精品丝袜久久久久久不卡|