使用Cocos Studio能够非常方便地设计游戏的一些界面,并导入到Cocos2d-x中。本文讲解如何基于Cocos Stusio 1.6和Cocos2d-x v3.2来实现一个简单的uibutton点击功能。
首先我们打开Cocos Studio1.6,选择UIEditor,进去后我们发现有很多的示例,选中一个叫demologin的示例:
选择好后我们发现如下图,简单介绍了下功能:
这里我们选中那个login按钮,发现这个按钮的实例名叫login_Button,这个名字我们等会代码里要用,然后我们保存一下。
在保存路径下找到这个工程文件夹,打开
有这些文件,我们把Json和Resources文件夹下的资源复制到Cocos2d-x中的资源文件夹中。
这个json文件就是记录了这个widget的各种数据,Cocos2d-x会解析这些数据然后还原这个界面,感兴趣的可以打开研究下。
好了到了代码阶段,我就简单的创建了个helloworld,但是我们要把三个外部的工程库导入这个解决方案并引用并在头文件中包含。
好了,下面就是代码了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
//HelloWorldScene.h
#ifndef__HELLOWORLD_SCENE_H__
#define__HELLOWORLD_SCENE_H__
#include"cocos2d.h"
//导入这三个头文件
#include"extensions/cocos-ext.h"
#include"ui/CocosGUI.h"
class
HelloWorld:
public
cocos2d::Layer
{
:
//there'sno'id'incpp,sowerecommendreturningtheclassinstancepointer
static
cocos2d::Scene*createScene();
//Here'sadifference.Method'init'incocos2d-xreturnsbool,insteadofreturning'id'incocos2d-iphone
virtual
bool
init();
//aselectorcallback
void
menuCloseCallback(cocos2d::Ref*pSender,cocos2d::ui::TouchEventTypetype);
//implementthe"staticcreate()"methodmanually
CREATE_FUNC(HelloWorld);
};
#endif//__HELLOWORLD_SCENE_H__
|
//HelloWorldScene.cpp
#include"HelloWorldScene.h"
USING_NS_CC;
//这个是命名空间
ui;
Scene*HelloWorld::createScene()
{
//'scene'isanautoreleaSEObject
autoscene=Scene::create();
//'layer'isanautoreleaSEObject
autolayer=HelloWorld::create();
//addlayerasachildtoscene
scene->addChild(layer);
//returnthescene
return
scene;
}
//on"init"youneedtoinitializeyourinstance
HelloWorld::init()
{
//////////////////////////////
//1.superinitfirst
if
(!Layer::init())
{
return
false
;
}
SizevisibleSize=Director::getInstance()->getVisibleSize();
Vec2origin=Director::getInstance()->getVisibleOrigin();
//有些功能能和cocos2dx混合着用
//这里的widget有点类似一个layer,反正我是这样理解的
this
->addChild(pNode);
//我们从widget中找到那个button的名字然后实例出来(跟android有点像)
ui::Button*button=(ui::Button*)ui::Helper::seekWidgetByName(pNode,
"login_Button"
);
//给这个按钮增加一个touch的侦听(这边就和cocos2dx有不同了)
button->addTouchEventListener(
,toucheventselector(HelloWorld::menuCloseCallback));
true
;
}
//这里是侦听回调函数
HelloWorld::menuCloseCallback(cocos2d::Ref*pSender,ui::TouchEventTypetype)
{
//这里用switch来判断,非常的简洁明了
switch
(type)
{
case
ui::TouchEventType::TOUCH_EVENT_BEGAN:
{
log
(
"touchbegan"
);
break
;
}
ui::TouchEventType::TOUCH_EVENT_MOVED:
{
"touchmoved"
);
;
}
ui::TouchEventType::TOUCH_EVENT_ENDED:
{
"touchended"
);
;
}
ui::TouchEventType::TOUCH_EVENT_CANCELED:
{
"touchcanceled"
);
;
}
default
:
;
}
}
|
运行
点击按钮测试下
好的,完成。