1. 新版本的加载方式:
使用Cocos Studio 2.0发布的CSB资源更换了加载方式,需要用CSLoader来加载。CSLoader在Cocos2d-x 3.3RC0开始提供。
#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()
{
//以下是加载相关的代码:
None *rootNode = CSLoader::createNode("MainScene.csb");//传入Studio2.x的资源路径
this->addChild(rootNode);//假设this是即将显示的scene
//加载动画:
ActionTimeline *action = CSLoader::createTimeline("MainScene.csb");
rootNode->runAction(action);//注!!!:同一个文件创建的节点只能使用同一个文件创建的动画。
//播放动画:
action->gotoFrameAndPlay(0,60,true);//从第0帧到60帧循环播放。还有其他重载函数,具体看源码。
//帧事件监听
action->setFrameEventCallFunc(CC_CALLBACK_1(myScene::onFrameEvent,this));
//关于CC_CALLBACK_1需要点C++11的基础才能知道是咋回事,这里只要照着写就行。想了解可以查下std::Bind
}
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");
}
}
PS:不会看源码的码农不是好程序猿啊。经常有人求某个API接口,这东西查查头文件看接口名就能知道个大概啦。源码就是最权威的API文档啊!
2. 关于一个UI界面多个动画
这个暂时还没有提供,目前是一个UI带一个Action。但是可以通过限制播放第几帧到第几帧的的方式来播放同一个动画的不同段。
如:
1
2
|
action->gotoFrameAndPlay(0,
true
);循环播放0-60帧
action->gotoFrameAndPlay(60,120,
true
);循环播放60-120帧
|
3. 资源的预加载(CocoaChina论坛会员user_rcs同学提出的)
一直以来Studio的UI界面都是没有提供资源异步加载的
但是UI里头用到的图片是可以用异步的方式预先加载到内存的。
1
|
TextureCache::getInstance()->addImageAsync(filename,callback)
|
PS:Cocos2d-x 3.2之前UI的加载速度是很慢的,但是3.2开始UI的加载速度已经大幅优化过了,现在加载UI主要消耗的时间在从内存读文件上。
4.其他方面的例子
a.github上的一个游戏demo:https://github.com/chukong/CocosStudioSamples
b.在Cocos2d-x 3.3引擎根目录下Build的文件夹里头,有个Win32的解决方案sln文件,用VS打开。
这个是Cocos2d-x的test项目,里头演示了2d-x几乎所有功能,包括Studio相关的内容。这个算是用来学习2d-x捷径。
5.节点获取
参考《基于Cocos Studio 2.0获取某个节点的方法》
6.如何监听各个GUI控件的交互事件(参考文章)
7.编辑界面中各个控件属性在Cocos2d-x中对应的接口(beta0)
UI控件分类下载:UI控件分类(1).zip(有标明控件和2d-x中对应的GUI类)
Cocos引擎中文官网现面向广大Cocos引擎相关开发者征集优秀教程(Cocos2d-x/Cocos2d-JS/Quick/Cocos Studio),欢迎给位童鞋踊跃投稿!来稿请发送至:support@cocos.org。