如何在2d-x中加载CocosStudio2.0版本生成的数据

it2025-10-20  2

使用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");}

转载于:https://www.cnblogs.com/zhujiulunjian/p/6652248.html

最新回复(0)