【教程】如何在2d-x中加载CocosStudio2.0版本生成的数据
来源:互联网 发布:js控制数据几个为一行 编辑:程序博客网 时间:2024/06/06 16:41
使用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");
}
注:
1. 不会看源码的码农不是好程序猿啊。经常有人求某个API接口,这东西查查头文件看接口名就能知道个大概啦。源码就是最权威的API文档啊有木有!!!
2. 2.x版本Studio导出的CSB资源需要与2d-x严格对应(具体看这里)(估计以后会提供与2d-x解耦的方法。)
3. CocosStudio v2.x 假定在编辑器里边的资源目录即游戏的最终的目录结构,因而如果你修改了导出资源的目录则需要编辑器目录也需要跟着修改。也可以用addSearchPath来把你的路径添加到FileUtils中,但要小心文件名冲突。
PS:我已经在3.6亲自测试过了,如果还是侦听不到帧事件,请先测试下面的资源文件和代码,谢谢。
以下提供的是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");
}
注:
1. 不会看源码的码农不是好程序猿啊。经常有人求某个API接口,这东西查查头文件看接口名就能知道个大概啦。源码就是最权威的API文档啊有木有!!!
2. 2.x版本Studio导出的CSB资源需要与2d-x严格对应(具体看这里)(估计以后会提供与2d-x解耦的方法。)
3. CocosStudio v2.x 假定在编辑器里边的资源目录即游戏的最终的目录结构,因而如果你修改了导出资源的目录则需要编辑器目录也需要跟着修改。也可以用addSearchPath来把你的路径添加到FileUtils中,但要小心文件名冲突。
PS:我已经在3.6亲自测试过了,如果还是侦听不到帧事件,请先测试下面的资源文件和代码,谢谢。
0 0
- 【教程】如何在2d-x中加载CocosStudio2.0版本生成的数据
- 【教程】CocosStudio2.x发布的资源在2d-x中的使用简介
- 如何在arcmap10.0以及以上版本中使用arcgis9.X系列的编辑捕捉模式
- 如何在数据中能加载.JPG格式的图片
- 如何在phonegap中监听数据加载的事件
- Gleed2D:轻量级2D关卡编辑器 以及在Cocos2d-x使用Gleed2D生成的地图
- 如何在xcode中同时安装两个版本的cocos2d-x
- [Cocos2d-x]在Cocos2d-x 3.x版本中如何通过WebSocket连接服务器进行数据传输
- [Cocos2d-x]在Cocos2d-x 3.x版本中如何通过WebSocket连接服务器进行数据传输
- 3.x版本内核中platform_device的生成
- 3.x版本内核中platform_device的生成
- 如何在低版本的Android SDK中生成缩略图——ThumbnailUtils
- 如何在OsgEarth中加载谷歌卫星地图的ArcGISServer服务教程
- 如何在4.X版本实现Switch在5.X的效果
- 如何在网络中加载TabelView的数据(手动实现)?
- 如何基于DEM高程数据提取生成等高线的教程
- Cocos2d-x教程 Lua脚本(1) 如何在Cocos2d-x中使用Lua脚本
- Cocos2d-x教程 Lua脚本(1) 如何在Cocos2d-x中使用Lua脚本
- 泰勒教授《哈佛幸福课》提及46本书籍
- java--关于线程的记录
- Android Socket之聊天室
- 《跟我学Shiro》PDF完结版下载
- 双11或成制造业零售业供给侧改革契机
- 【教程】如何在2d-x中加载CocosStudio2.0版本生成的数据
- 怎么用MathType解决Word公式排版很乱的问题
- 分类(2):k-最近邻、贝叶斯分类器
- 语句——if语句中各种值和零值比较
- bat脚本
- AJAX 后台 传参
- 移动App测试点
- 【Java每日一题】20161102
- CSDN-markdown编辑器语法