使用Cocos Studio1.6创建一个Button并在Cocos2d-x 2.2.6中加载
来源:互联网 发布:男生补水面膜推荐 知乎 编辑:程序博客网 时间:2024/05/01 09:41
由于Cocos2d-x3.x的代码和各种乱七八糟的系统实在是混乱,所以笔者最近在研究Cocos2d-x 2.x。网上现在关于2.x的教程着实不多了,又因为Cocos引擎各版本都互相不兼容,所以贴一下Cocos2d-x 2.x与Cocos Studio1.x的交互。
关于Cocos Studio的操作,晚上教程还是有的,就先不贴了,重点放在API与交互的解决上。
关于Cocos2d-x 2.2.6加载UI不响应点击事件的问题有两个:
1、网上指出的根节点应该取消 “交互” 的对勾,不过据说这个只能解决3.0版本中不响应的问题。
2、在2.2.6中,如果UI控件不响应触摸事件,可以看看自己添加控件时用的是addChild()还是addWidget()。前者不会响应触摸事件,后者才可以。
(我的文件中的根节点就是这个Root)
用到的头文件:
CocoStudio\GUI\BaseClasses\UIWidget.h //定义了TouchEventType
CocoStudio\Reader\WidgetReader\WidgetReader.h //主要头文件
命名空间:
using namespace cocos2d;
using namespace cocos2d::ui;
using namespace cocos2d::extension;
下面是源代码,VS2013+Cocos2D-x 2.2.6,应该可以直接复制,没有问题。
#ifndef__HELLOWORLD_SCENE_H__
#define__HELLOWORLD_SCENE_H__
#include "cocos2d.h"
#include "CocoStudio\GUI\BaseClasses\UIWidget.h"
class HelloWorld : public cocos2d::CCLayer
{
public:
// Here's a difference. Method 'init' in cocos2d-xreturns bool, instead of returning 'id' in cocos2d-iphone
virtual bool init();
// there's no 'id' in cpp, so we recommend returning theclass instance pointer
static cocos2d::CCScene *scene();
// implement the "static node()" methodmanually
CREATE_FUNC(HelloWorld);
void ExitButtonCallBack(CCObject* obj, cocos2d::ui::TouchEventTypeeventType);
};
#endif //__HELLOWORLD_SCENE_H__
#include "HelloWorldScene.h"
#include "CocoStudio\GUI\BaseClasses\UIWidget.h"
#include "CocoStudio\Reader\WidgetReader\WidgetReader.h"
using namespace cocos2d;
using namespace cocos2d::extension;
using namespace cocos2d::ui;
CCScene* HelloWorld::scene()
{
// 'scene' is an autorelease object
CCScene *scene = CCScene::create();
// 'layer' is an autorelease object
HelloWorld *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 ( !CCLayer::init() )
{
return false;
}
CCSize visibleSize =CCDirector::sharedDirector()->getVisibleSize();
CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
UILayer *pTouchLayer =UILayer::create();//UI控件的载体,继承自CCLayer
this->addChild(pTouchLayer);
UIWidget *pMapRoot = (Layout *)(GUIReader::shareReader()->widgetFromJsonFile("DemoUI/DemoUI.json"));
//或者
//UIWidget *pMapRoot = (Layout*)(GUIReader::shareReader()->widgetFromBinaryFile("DemoUI/DemoUI.csb"));
pTouchLayer->addWidget(pMapRoot);//重点!!!UILayer添加控件一定不能使用addChild,否则将不响应点击
UIButton *pExitButton =(UIButton *) (pTouchLayer->getWidgetByName("ExitButton"));
//或者
//UIButton *pExitButton =(UIButton*)(UIHelper::seekWidgetByName(pMapRoot, "ExitButton"));
pExitButton->addTouchEventListener(this,toucheventselector(HelloWorld::ExitButtonCallBack));
return true;
}
void HelloWorld::ExitButtonCallBack(CCObject*obj, TouchEventTypeeventType)
{
CCLOG("Exit Button Click!");
}
- 使用Cocos Studio1.6创建一个Button并在Cocos2d-x 2.2.6中加载
- Cocos2d-x V3.2+Cocos Studio1.6 实现一个简单的uibutton点击功能
- 【Cocos2d-x v3.2+Cocos Studio1.6】实现一个简单的uibutton点击功能
- 在Cocos2d-X中创建一个场景
- CoCos2D-X-2.1.5中使用Cygwin创建新项目,并在Eclipse中编译通过
- 创建cocos2d-x lua并使用一个lua脚本
- cocos2d-x-3.13\cocos\ui控件Button
- 如何使用Cocos Studio创建对话框,并用Cocos2d-x显示
- Cocos2D-X学习2:使用cocos-console创建项目工程
- 【Cocos2d-X】Cocos2D-X 2.2.6创建项目
- cocos2d-x 2.2 在WINDOWS中如何创建项目
- cocos2d-x 2.2.1 在WINDOWS中如何创建项目
- cocos2d-x 2.2 在Windows中创建项目
- cocos2d-x 2.2 在WINDOWS中如何创建项目
- Cocos2d-X 在MAC中创建项目
- cocos2d-x 3.4 加载Cocos studio v2.1中发布的资源
- Mac下使用Cocos2d-x Lua加载Cocos Studio到处的Json文件和动画
- Mac下使用Cocos2d-x Lua 3.2加载Cocos Studio 1.0beta导出的Json
- 添加第三方jar包到nexus库(by -louis)
- python实现12306车票查询
- Spring IOC AOP学习
- SpringMVC 页面传Date类型值提示Could not instantiate bean class [java.util.Date]: Constructor threw exception
- ROC AUC指标详解
- 使用Cocos Studio1.6创建一个Button并在Cocos2d-x 2.2.6中加载
- NoClassDefDoundErr报错原因之一
- 用Java的套接字编程实现一个多线程的回显(echo)服务器。
- 利用 Chrome 开发者工具远程调试 Android 中的原生 WebView
- git用法小结(1)--建立远程仓库
- notification 推送警告- 通知集成遇到的问题
- input子系统四 input事件处理
- Unbound classpath variable: 'TOMCAT_HOME/lib/servlet-api.jar' in project 'XXX'
- JXL 操作Excel