Cocos2d-x V3.2+Cocos Studio1.6 实现一个简单的uibutton点击功能
好久没写博客了
这几天在学习cocos studio,这个软件可以很方便的设计游戏的一些界面,并导入到cocos2dx中,今天就用button来做个样例
首先我们打开Cocos Studio1.6,选择UIEditor,进去后我们发现有非常多的演示样例,我们就悬着一个叫demologin的演示样例
选择好后我们发现例如以下图,简介了下功能
这里我们选中那个loginbutton,发现这个button的实例名叫login_Button,这个名字我们等会代码里要用,然后我们保存一下
在保存路径下找到这个project目录,打开
有这些文件,我们把Json和Resources目录下的资源拷贝到cocos2dx中的资源目录中
这个json文件就是记录了这个widget的各种数据,cocos2dx会解析这些数据然后还原这个界面,感兴趣的能够打开研究下
好了到了代码阶段,我就简单的创建了个helloworld,可是我们要把三个外部的project库导入这个解决方式并引用并在头文件里包括
好了,以下就是代码了
//HelloWorldScene.h
#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__ #include "cocos2d.h"
//导入这三个头文件
//注意在这个project的属性->C\C++ ->常规->附加包括文件夹 中加入这三个文件的路径
#include "cocostudio/CocoStudio.h"
#include "extensions/cocos-ext.h"
#include "ui/CocosGUI.h" class HelloWorld : public cocos2d::Layer
{
public:
// there's no 'id' in cpp, so we recommend returning the class instance pointer
static cocos2d::Scene* createScene(); // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
virtual bool init(); // a selector callback
void menuCloseCallback(cocos2d::Ref* pSender,cocos2d::ui::TouchEventType type); // implement the "static create()" method manually
CREATE_FUNC(HelloWorld);
}; #endif // __HELLOWORLD_SCENE_H__
//HelloWorldScene.cpp
#include "HelloWorldScene.h" USING_NS_CC;
//这个是命名空间
using namespace cocostudio;
using namespace ui; Scene* HelloWorld::createScene()
{
// 'scene' is an autorelease object
auto scene = Scene::create(); // 'layer' is an autorelease object
auto layer = HelloWorld::create(); // add layer as a child to scene
scene->addChild(layer); // return the scene
return scene;
} // on "init" you need to initialize your instance
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !Layer::init() )
{
return false;
} Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin(); //获取我们的Cocos Studio UIdemo
//这里我们创建了一个widget,这里说明下貌似cocostudio有自己的一套代码风格和api
//有些功能能和cocos2dx混合着用
//这里的widget有点相似一个layer,反正我是这样理解的
ui::Widget * pNode=cocostudio::GUIReader::getInstance()->widgetFromJsonFile("DemoLogin.json");
this->addChild(pNode); //我们从widget中找到那个button的名字然后实例出来(跟android有点像)
ui::Button * button=(ui::Button *)ui::Helper::seekWidgetByName(pNode,"login_Button");
//给这个按钮添加一个touch的侦听(这边就和cocos2dx有不同了)
button->addTouchEventListener(this,toucheventselector(HelloWorld::menuCloseCallback)); return true;
} //这里是侦听回调函数
void HelloWorld::menuCloseCallback(cocos2d::Ref* pSender,ui::TouchEventType type)
{
//cocostudio的侦听,你能够依据type的类型来运行对应的代码
//这里用switch来推断,很的简洁明了
switch (type)
{
case ui::TouchEventType::TOUCH_EVENT_BEGAN:
{
log("touch began");
break;
}
case ui::TouchEventType::TOUCH_EVENT_MOVED:
{
log("touch moved");
break;
}
case ui::TouchEventType::TOUCH_EVENT_ENDED:
{
log("touch ended");
break;
}
case ui::TouchEventType::TOUCH_EVENT_CANCELED:
{
log("touch canceled");
break;
}
default:
break;
}
}
执行
点击button測试下
好的,完毕
Cocos2d-x V3.2+Cocos Studio1.6 实现一个简单的uibutton点击功能的更多相关文章
- 使用Cocos studio创建一个简单的project
前不久我接到了一个项目,项目要求使用Cocos2d-X的最新版本号,Cocos2d-X3.4.对于一直在陶醉在Cocos2d-X2.2.3的世界中的我开说,使用Cocos2d-X3.4忽然认为有点不适 ...
- Cocos Studio1.5.0.1开发学习笔记(一)
听说Cocos Studio很久了,主要是因为骨骼动画.目前看来Cocos2d-x播放动画的方式只有2种: 第一种:是播放序列帧动画,即将动画的每一帧都加载进缓存里,需要播放时再使用Animation ...
- Cocos2d-android (01) 创建一个简单的cocos2d应用程序
下载Cocos2d-android的源代码:cocos2d-android-1 git@github.com:ZhouWeikuan/cocos2d.git 将项目导入到eclipse中.运行实例: ...
- Cocos2d-x 学习(1)—— 通过Cocos Studio创建第一个Demo
近期在工作上有了比較大的转变,自学情绪也慢慢高涨,本来一直在研究unity的技术.由于换了工作会開始接触cocos2d-x.但并不意味着停止研究unity,以后有时间还是会继续的. 公司的cocos2 ...
- cocos2d 保存最近登陆多个账号最多一个月
用的是一个单例来管理 ,数据是存在本地的xml文件里的格式如下 <?xml version="1.0" encoding = "utf-8" ?> ...
- 词汇小助手V3.0发布了——不只是一个查单词的软件
欢迎使用词汇小助手 作者:IT小小龙 电子邮箱:long_python@126.com 个人博客:http://blog.sina.com.cn/buduanqs 一款跨平台词汇查询记忆学习软件. 已 ...
- Cocos2d-x v3.0 正式版 如何创建一个项目,TestCpp执行
欢迎增加 Cocos2d-x 交流群: 193411763 转载请注明原文出处:http://blog.csdn.net/u012945598/article/details/24456579 首先到 ...
- unity入门笔记
我于2010年4月1日硕士毕业加入完美时空, 至今5年整.刚刚从一家公司的微端(就是端游技术+页游思想, 具体点就是c++开发, directX渲染, 资源采取所需才会下载)项目的前端主程职位离职, ...
- 使用 Python 编写脚本并发布
使用 Python 编写脚本并发布 P1: 脚本 通常在 Linux 服务器上会遇到在命令行中输入命令的操作,而有些操作包含的命令数目较多或者其中的命令包含的参数较多,如果一个一个的敲命令的话就太麻烦 ...
随机推荐
- 15、python学习手册之:python语句、赋值、表达式和打印
1.语句的另一个特殊规则是用一对括号把语句括起来就可以:括号().方括号[].字典的大括号{}.任何括在这些符号里的程序代码都可横跨好几行. 2.括号是可以包含一切的,因为任何表达式都可以包含在内,只 ...
- 无法显式调用运算符或访问器 错误处理方法 DLL study
无法显式调用运算符或访问器 错误处理方法 转 无法显式调用运算符或访问器 错误处理方法 反汇编一个dll类库,导出的项目会报出很多bug,其中主要的就是“无法显式调用运算符或访问器”这个错误,看了一下 ...
- Android圆环控件
Android圆环控件 近期在做一个功能.界面效果要求例如以下: 看到这个界面,我首先想到了曾经在做phone模块的时候,我们定制的来电界面InCallTouchUi,界面效果是相似的. 来电控件使用 ...
- js中的$符号代表什么
js中的$符号代表什么 一.总结 1.$:相当于document.getElementById(...) 2.$常用用法:每句话意思下面有,好东西 $("div p"); // ( ...
- UCloud上LAMP小型站点搭建与測试
文件夹 介绍 LAMP环境搭建 打开UCloud防火墙 WordPress安装 应用測试 介绍 本篇博客旨在通过介绍搭建一个WordPress博客的过程介绍在UCloud的云主机(UHOST)上搭建单 ...
- sum()函数——MATLAB
a=sum(A) %列求和 b=sum(A,2) %行求和 c=sum(A(:)) %矩阵求和 假定A为一个矩阵: sum(A)以矩阵A的每一列为对象,对一列内的数字求和. sum(A,2)以矩阵A ...
- 13、虚拟驱动vivi.c注册过程分析及怎么写V4L2驱动及启动过程
UVC设备也是一个usb设备,在uvc_driver.c中的init函数会调用usb_register注册,根据id_table发送可支持的设备后调用probe函数,其会去uvc_register_c ...
- 【15.07%】【codeforces 625A】Guest From the Past
time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...
- Java 学习(21):Java 实例
Java 实例 本章节我们将为大家介绍 Java 常用的实例,通过实例学习我们可以更快的掌握 Java 的应用. Java 环境设置实例 //HelloWorld.java 文件 public cla ...
- [转] Python 爬虫的工具列表 附Github代码下载链接
转自http://www.36dsj.com/archives/36417 这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests - ...