1. 程式人生 > >Cocos2d-x 中載入骨骼動畫資源

Cocos2d-x 中載入骨骼動畫資源

Cocos Studio是一套基於Cocos2d-x的免費遊戲開發工具集,它能幫助開發者快速建立遊戲資源,將大部分繁瑣的遊戲開發工作使用編輯器來快速製作,進一步幫助遊戲開發者減短開發週期、提高開發效率。

Cocos Studio本身不光只是針對骨骼動畫的編輯而設計的,它還提供了UI、場景和資料等資訊的編輯工作。就當前的Cocos Studio而言,主要分兩種,一種是Win版本的Cocos Studio,另一個則是剛剛釋出不久的Mac版 Cocos Studio v1.0 alpha1。前者由UI編輯器、動畫編輯器、場景編輯器和資料編輯器四部分組成,分別用於處理遊戲中的UI介面、動畫資源、遊戲場景和遊戲資料。而Mac版的Cocos Studio整合了原有的UI和動畫編輯器,使小夥伴們的使用更加自由。至於想要更清楚的瞭解骨骼動畫編輯器,可以到網上查詢。

那麼接下來我們介紹一下如何載入骨骼動畫資源

 在Cocos2d-x程式中使用Cocos Studio動畫首先需要包含相關標頭檔案,如下

#include "cocostudio/cocostudio.h"

 usingnamespace cocostudio;

建立一個骨骼動畫物件,需要將動畫檔案和資原始檔載入到程式。這裡我們通過ArmatureManager動畫資料管理器來載入動畫。ArmatureManager本身是一個單例,它管理整個場景中的Armature。而Armature則封裝了我們播放動畫需要的Animation。由此可見,這是一個三層締結的層次結構。其中ArmatureManager最大,然後是Armature,最後是Animation。


ArmatureDataManager::getInstance()->

  addArmatureFileInfo(“xxx.ExportJson”,”xxx.plist”,”xxx.png”);//三種檔案

Armature* am1=Armature::create(“xxx”); //建立動畫物件

am1 -> setTag(110);

am1->getAnimation()->play(“walk”)//播放動畫   walk 只是其中的一項  

this->addChild(am1);
放動畫需要根據具體地需要來播放,這樣才能知道使用者要播放的動畫是哪一個。可以像上面程式碼一樣指定動畫名來播放動畫,也可以通過指定動作編號來播放動畫,如下:

am1->getAnimation()->playWithIndex(0);//播放第一組動畫

既然都說了這麼多了,那就在贈送些吧·····

//設定動畫的回撥函式  

am1->getAnimation()->setMovementEventCallFunc([] (Armature *ani, MovementEventType tp, const std::string & name){

if (tp==MovementEventType::COMPLETE) {

            CCLOG("tp%d,name:%s",tp,name.c_str());//可以輸出檢測一

      if(strcmp(name.c_str(), “attack”)==0) //attack為檔案中的另一組動畫

            {

                am1->getAnimation()->play("walk");

            }

        }

    });

//觸控後 變換動作 

auto lis=EventListenerTouchOneByOne::create();

    lis->onTouchBegan=[&](Touch* t,Event *e){

        Armature *am2=(Armature *)this->getChildByTag(110);//由於在函式中我需要通過編號來獲取上面建立的物件

am2->getAnimation()->play("stand");  //檔案中的站立動畫

Director::getInstance()->getEventDispatcher()

    ->addEventListenerWithSceneGraphPriority(lis, this);






相關推薦

Cocos2d-x 載入骨骼動畫資源

Cocos Studio是一套基於Cocos2d-x的免費遊戲開發工具集,它能幫助開發者快速建立遊戲資源,將大部分繁瑣的遊戲開發工作使用編輯器來快速製作,進一步幫助遊戲開發者減短開發週期、提高開發效率。 Cocos Studio本身不光只是針對骨骼動畫的編輯而設計的,它還提供了UI、場景和資料等資訊的編

Cocos2d-x替換動畫(Armature)的節點與粒子

     Cocos2d-x遊戲開發中常用到骨骼動畫Armature,Armature不僅佔用資源不大(相對於幀動畫來說),而且還能新增幀事件,它還自帶有動畫的播放、停止、迴圈事件等。      廢話少說,直入主題。拿到一個骨骼動畫的時候,我們往往會有這樣的需求:在情況A

Mac下使用Cocos2d-x Lua載入Cocos Studio到處的Json檔案和動畫

本文轉自:http://segmentfault.com/blog/tangyunlou/1190000000648696 一、匯入Json 1、開啟Cocos Studio,新建專案,然後開始拖自己需要的控制元件和設計各種幀動畫。因為是beta版的,還有一些bug,比

Cocos2d-xVector<T>容器以及實例介紹

top 宋體 hello 操作符 模板類 log ins bsp main Vector<T> 是Cocos2d-x 3.x推出的列表容器,因此它所能容納的是Ref及子類所創建的對象指針,其中的T是模板,表示能夠放入到容器中的類型,在Cocos2d-x 3.x

cocos2d-x XML解析與數據存儲

lba false 網上 unsigned failed popu new ccm cfile 一不小心就玩了一周的遊戲了。哎。玩的時候時間過得總是這麽快。。。 於是今天決定看一下之前不怎麽非常熟悉的XML;(之前做遊戲時數據的儲存用到過XML,但這塊是還有一個同事在做

linux下開發,解決cocos2d-x編譯出現的一個小問題, undefined reference to symbol &#39;pthread_create@@GLIBC_2.2.5&#39;

water span x86 code bject data- ace 技術分享 inux 解決cocos2d-x中編譯出現的一個小問題 對於cocos2d-x 2.×中編譯中,若頭文件裏引入了#include "cocos-ext.h",在進行C++編譯的時候會遇到例

實例介紹Cocos2d-xBox2D物理引擎:碰撞檢測

函數實現 pda creates pty blank oid rtu and 重構 在Box2D中碰撞事件通過實現b2ContactListener類函數實現,b2ContactListener是Box2D提供的抽象類,它的抽象函數:virtual void BeginC

Cocos2d-XMenu的綜合運用

cond edi ros log 程序 cal coo 項目 綜合 今天將曾經寫的代碼和項目集成到了一個菜單中,能夠通過菜單切換到曾經做的項目 程序的project文件夾 主要代碼分析: LessonMenu.h中實現創建菜單,遍歷菜單通過菜單切換

實例介紹Cocos2d-xBox2D物理引擎:HelloBox2D

pre all align 討論 響應 算法 站點 virtual origin 我們通過一個實例介紹一下。在Cocos2d-x 3.x中使用Box2D物理引擎的開發過程,熟悉這些API的使用。這個實例執行後的場景如圖所看到的,當場景啟動後,玩家能夠觸摸點擊屏幕,每次觸

Cocos2d-X的聲音和音效

循環 volume tid ng- cocos2d pop sin 返回值 source 在玩遊戲時都會有各種遊戲音,如啟動遊戲時會有背景音,勝利或者失敗會有一些音效。在Cocos2d-X中能夠使用CocosDenshion實現各種聲音 在使用CocosDensh

Cocos2d-x可以實現的動畫效果

動畫效果 ace 所在 nsh ans self 翻頁 led face 動作(Actions)move移動:moveto/moveby 從一個位置移動到另外一個位

CSharpGL(50)使用Assimp載入骨骼動畫

CSharpGL(50)使用Assimp載入骨骼動畫 在(http://ogldev.atspace.co.uk/www/tutorial38/tutorial38.html)介紹了C++用Asismp庫載入骨骼動畫的原理和流程。 在(http://wiki.jikexueyuan.com/project

cocos2d-x 選單類

選單相關類包含:選單類和選單項類,選單類圖,從類圖可見Menu類繼承於Layer。   選單項類圖,從圖中可見所有的選單項都是從BaseMenuItem繼承而來的,BaseMenuItem是抽象類,具體使用時是使用它的6個子類。 說明如下:   MenuItem       最基本的選單

Cocos2d-x的4種佈局

Cocos2d-x中一共有4種佈局:ABSOLUTE(絕對佈局)、HORIZONTAL(水平佈局)、VERTICAL(垂直佈局)和RELATIVE(相對佈局)。 注意,只有在絕對佈局內部,元件使用setPosition()方法來指定其位置。另外三種佈局中的元件,setP

卡通渲染Cocos2d-x的實現(描邊與對物體表面顏色的色階化)

卡通渲染Cocos2d-x中的實現 在一些型別的遊戲中,使用卡通渲染能夠將原有模型的一些細節剝離,使原本比較寫實的模型變得卡通化。在這裡,我向大家介紹簡單介紹一下如何在Cocos2d-x中實現卡通渲染。 事實上,卡通渲染具體來說,可以分為兩個部分:描邊與對物體表面顏色的

cocos2d-x解決點選事件上層響應,下層不響應

解決方案是重寫一個Layer,加在上下層中間,即可只響應上層事件,阻斷了下層的事件,設定優先順序,程式碼如下 #ifndef _TouchBlockLayer_H_ #define _TouchBlockLayer_H_ class TouchBlockLayer:

Cocos2d-x 的Sleep 和USleep

                Cocos2d-x跨平臺,但是這個Sleep延時需要區分平臺 (不知道是不是我自己沒有找到),還是

Cocos2d-xVector容器以及例項介紹

Vector<T> 是Cocos2d-x 3.x推出的列表容器,因此它所能容納的是Ref及子類所建立的物件指標,其中的T是模板,表示能夠放入到容器中的型別,在Cocos2d-x 3.x中T表

cocos2d-xbox2d的關節

// // HelloWorldScene.cpp // Box2dDemo // // Created by gaocong on 13-6-24. // Copyright __MyCompanyName__ 2013年. All rights reserved

從3DS MAX匯出骨骼動畫注意的幾件事

編寫外掛從MAX中匯出骨骼動畫的幾點注意事項.1.首先要遍歷所有的MESH,和BONE,並匯出0時刻的MESH所有頂點位置及索引,和BONE的世界變換矩陣的逆矩陣.這些資訊可以單獨放到一個檔案中,以後加入動作時,每個動作可以做為一個檔案.2.如果使用Physique做為蒙皮外