如何在2d-x中加載CocosStudio2.0版本生成的數據

使用Studio2.0發佈的CSB資源更換了加載方式,須要用CSLoader來加載。CSLoader在Cocos2d-x3.3RC0開始提供。
如下提供的是C++的代碼,
lua、js的接口是同樣的。只有一點區別:
CSLoader在lua中對應cc.CSLoader
在js中對應ccs.csLoader (在2d-js3.1RC0中須要作點修改


#include "ui/CocosGUI.h"//UI相關的頭文件
#include"cocostudio/CocoStudio.h"//在CocosStudio.h 頭文件中已經包含了Studio所須要的各個頭文件(除CocosGUI)所以咱們使用Studio僅
須要包含他就能夠
using namespace cocos2d;//CSLoader位於cocos2d命名空間。
using namespace cocostudio::timeline;//動畫相關的類位於cocostuio::timeline當中


void myScene::initFunc()
{
    //如下是加載相關的代碼:
    Node *rootNode = CSLoader::createNode("MainScene.csb");//傳入Studio2.x的資源路徑
    this->addChild(rootNode);//假設this是即將顯示的scene

    //加載動畫:
    ActionTimeline *action = CSLoader::createTimeline("MainScene.csb");
    rootNode->runAction(action);

    //注!!!:同一個文件建立的節點只能使用同一個文件建立的動畫。
//嵌套節點的動畫會自動加載動畫,能夠用嵌套節點->getActionByTag(嵌套節點->getTag()) 來獲取動畫


    //播放動畫:
    action->gotoFrameAndPlay(0,60,true);//從第0幀到60幀循環播放。還有其餘重載函數,具體看源碼。


    //幀事件監聽
    action->setFrameEventCallFunc(CC_CALLBACK_1(myScene::onFrameEvent, this));
    //關於CC_CALLBACK_1須要點C++11的基礎才能知道是咋回事,這裏只要照着寫就行。想了解能夠查下std::Bind

   //幀事件是能夠檢測到最後一幀的事件的,已測3.6


   //動畫結束偵聽
   action->setLastFrameCallFunc(CC_CALLBACK_0(myScene::AnimationEnd, this));
  //能夠幀聽到,親測3.6。
}
void myScene::onFrameEvent(Frame* frame)//固定的格式
{
    EventFrame* evnt = dynamic_cast<EventFrame*>(frame);
    if(!evnt)
        return;


    std::string str = evnt->getEvent();
    if (str == "xxoo")
    {
        CCLOG("come on baby");
    }
}



void XXX::AnimationEnd()
{
CCLOG("animation end");
}
php

相關文章
相關標籤/搜索