【cocosStudio】查看官方示例--调用cocoStudio控件

2023-11-07

理解:

  • 将cocoStudio的ui控件转换成cocos的GUI控件来操作
  • 通过widgetFromJsonFile()加载根容器Plane控件
  • 通过Helper::seekWidgetByTag()寻找子控件

打开官方示例:

  • 打开CMD
  • CD到D:\cocos2d-x-3.3rc0\tests\cpp-tests\
  • 执行cocos run -p win32命令

将class下所有的文件全部放到Sublime Text 3中:

  • 查找文件CTRL+P:CocoStudio.h
  • 发现底下有个#include "cocostudio/CCSGUIReader.h"
  • 接着查找CCSGUIReader.h

导入头文件调用:(注意命名空间和强制类型转换类型)

  • 将Json文件中的控件,转换成cocos2dx里面的ui控件来操作
  • #include "cocostudio\CocoStudio.h"
  • #include "ui\UIButton.h"
  • using namespace cocostudio;
  • using namespace ui;
注意类型转换的类型必须一一对应,比如TextField就是TextField,不能转换为TextFieldTTF:
[cpp]  view plain  copy   在CODE上查看代码片 派生到我的代码片
  1. #include "HelloWorldScene.h"  
  2.   
  3. /* cocoStudio导出的Json文件 */  
  4. #define JSON "DemoLogin.json"  
  5. #define BTN_TAG 14  
  6. #define EDIT_TEXT_NAME 8  
  7.   
  8. /* 设置命名空间 */  
  9. USING_NS_CC;  
  10. using namespace cocostudio;  
  11. using namespace ui;  
  12. using namespace std;  
  13.   
  14. Scene* HelloWorld::createScene()  
  15. {  
  16.     auto scene = Scene::create();    
  17.     auto layer = HelloWorld::create();  
  18.     scene->addChild(layer);  
  19.     return scene;  
  20. }  
  21.   
  22. bool HelloWorld::init()  
  23. {  
  24.     if ( !Layer::init() )  
  25.     {  
  26.         return false;  
  27.     }  
  28.   
  29.     /* 加载cocoStudio界面 */  
  30.     auto uiScene = GUIReader::getInstance()->widgetFromJsonFile(JSON);  
  31.     addChild(uiScene);  
  32.   
  33.   
  34.     /* 找到cocoStudio的控件,装换成coocs的gui控件(Helper须加载CocosGUI.h) */  
  35.     /* 按钮 */  
  36.     Button *btn = (Button*)(Helper::seekWidgetByTag(uiScene,BTN_TAG));  
  37.     /* 设置按钮点击事件(注意转换类型的对应) */  
  38.     btn->addTouchEventListener( this, toucheventselector(HelloWorld::touchEvent));  
  39.   
  40.     /* 输入框(注意转换类型的对应,不是TextFieldTTF) */  
  41.     editText = (TextField*)(Helper::seekWidgetByTag(uiScene,EDIT_TEXT_NAME));  
  42.   
  43.     return true;  
  44. }  
  45.   
  46. /* 设置按钮点击事件  */  
  47. void HelloWorld::touchEvent(Ref *pSender, TouchEventType type){  
  48.       
  49.     switch (type)    
  50.     {    
  51.         case TOUCH_EVENT_BEGAN:    
  52.             CCLOG( "Began" );  
  53.             break;    
  54.                  
  55.         case TOUCH_EVENT_MOVED:    
  56.             break;    
  57.                  
  58.         case TOUCH_EVENT_ENDED:  
  59.             /* 输出输入框的内容 */  
  60.             CCLOG( editText->getString().c_str() );  
  61.             break;    
  62.   
  63.         case TOUCH_EVENT_CANCELED:    
  64.             break;    
  65.                  
  66.         default:    
  67.             break;    
  68.     }    
  69.   
  70. }  


FROM: http://blog.csdn.net/ns2250225/article/details/41961219



给cocos中添加响应事件的例子:

              #include "ui/CocosGUI.h"

              //获取屏幕大小
     Size visibleSize = Director::getInstance()->getVisibleSize();

     auto widget = Widget::create();
     widget->setContentSize(Size(100,100));
     widget->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
     widget->setTouchEnabled( true );
     this ->addChild(widget);
     widget->addTouchEventListener([](Ref *pSender, Widget::TouchEventType type){
         switch (type)
         {
             case Widget::TouchEventType::BEGAN:
                 CCLOG( "BEGAN" );
                 break ;
                 
             case Widget::TouchEventType::MOVED:
                 CCLOG( "MOVED" );
                 break ;
                 
             case Widget::TouchEventType::ENDED:
                 CCLOG( "ENDED" );
                 break ;
                 
             case Widget::TouchEventType::CANCELED:
                 CCLOG( "CANCELED" );
                 break ;
                 
             default :
                 break ;
         }
     });

from:http://www.cocoachina.com/bbs/read.php?tid-289092.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【cocosStudio】查看官方示例--调用cocoStudio控件 的相关文章

随机推荐

  • 运营之光2.0 我的互联网运营方法论与自白

    唯有爱与用户不可辜负 与每一位互联网人共勉 运营是什么 产品负责界定和提供长期用户价值 运营负责创造短期用户价值 协助产品完善长期价值 若干运营模块 内容运营 提升内容相关的数据 如内容数量 内容浏览量 内容互动数 内容传播数 用户运营 提
  • 最新版Android SDK Manager.exe 无法打开、配置代理等

    背景 升级 Android SDK tools 到版本26后就打不开Android SDK SDK Manager exe工具了 甚至会找不到Avd Manager exe和Sdk Manager exe这两个文件 这是因为谷歌把他们移除了
  • Excel如何将多分隔符的杂乱信息数据拆分

    1 如下图 是某老师要处理多分隔符号的杂乱数据 现在想要将数据中的姓名 性别 年龄分别拆分放在三个单元格中 2 选中B列所有要处理的数据区域 3 点击下图选项 Excel插件 具体安装方法百度即可 本文不作过多叙述 4 点击 更多 5 选择
  • vue项目中,main.js,App.vue,index.html如何调用

    1 main js是我们的入口文件 主要作用是初始化vue实例 并引入所需要的插件 2 App vue是我们的主组件 所有页面都是在App vue下进行切换的 其实你也可以理解为所有的路由也是App vue的子组件 所以我将router标示
  • cgo+gSoap+onvif学习总结:9、go和c进行socket通信进行onvif协议处理

    cgo gSoap onvif学习总结 9 go和c进行socket通信进行onvif协议处理 文章目录 cgo gSoap onvif学习总结 9 go和c进行socket通信进行onvif协议处理 1 前言 2 思路 3 c代码 3 1
  • 一步一步实现现代前端单元测试

    2年前写过一篇文章用Karma和QUnit做前端自动单元测试 只是大概讲解了 karma 如何使用 针对的测试情况是传统的页面模式 本文中题目中 现代 两字表明了这篇文章对比之前的最大不同 最近几年随着SPA Single Page App
  • 在web项目中如何导入jar包

    在Eclipse里 右键点击工程 gt build Path gt Configure Build Path gt Libraries gt Add JARs或者Add External JARs 如果是war包 把jar包扔到WEB IN
  • angular api请求简单封装get(),post()

    api请求简单封装 api 简单封装 scope api get function params callback http url params api url default url method GET params params s
  • 错误:No rule to make target `../pubbusiness/localshareapi/localsharerecv.cpp,need by ‘temp/localshare

    出现这个错误的原因 排查方向往出现错误的那个文件 可能有比如引用此文件的路径不对 工程更改路径或者更改了其中的文件夹名称等 解决方案 1 查看 pro或 pri文件里路径的 h或 cpp的加载路径有没有错 我的是因为这个原因 2 删除之前编
  • Jauns-gateway 报错【No package ‘libssl‘ found No package ‘libcrypto‘ found】

    No package libssl found No package libcrypto found 在Mac下配置janus gateway服务器的时候遇到了找不到libssl和libcrypto错误 详情如下 configure che
  • Java接口:实现多重继承,促进代码复用与扩展的强大工具

    目录 1 接口的定义与成员 2 接口的实现 3 接口的多继承与多态 3 1实现多重继承 3 2促进代码复用与扩展 4 Java新特性 默认方法 静态方法与私有方法 5 结语 1 接口的定义与成员 Java中使用interface关键字定义接
  • 即时通讯IM技术领域基础篇

    转自 https juejin im post 5a694f216fb9a01cb74e8f74 即时通讯IM技术领域基础篇 即时通讯IM技术领域提高篇 议题 准备工作 协议选型 网络传输协议选择 和 数据通信协议选择 xxx项目架构 架构
  • 重学java—基础知识点

    数据类型 1 基本数据类型 boolean 1 byte 8 char 16 short 16 int 32 float 32 long 64 double 64 每个类型都有它对应的包装类 自动装箱和拆箱操作 2 缓存池 valueOf
  • Rem与Px的转换

    rem是CSS3中新增加的一个单位值 他和em单位一样 都是一个相对单位 不同的是em是相对于元素的父元素的font size进行计算 rem是相对于根元素html的font size进行计算 这样一来rem就绕开了复杂的层级关系 实现了类
  • xshell7和xftp7下载和安装

    xshell7和xftp7下载和安装 环境 win10 链接 https pan baidu com s 1i6Zl2eW8tJJ83YAc02oQjg 提取码 6666 复制这段内容后打开百度网盘手机App 操作更方便哦 2022年06月
  • pandas 读/写取多个sheet 的excel

    经常使用pandas 读取多个sheet 的文件 读取方式 先获得sheet 名字 再指定sheet name 参数进行读取 写多个sheet 到同一个文件 import pandas as pd infile data test xlsx
  • FileReader与FileWriter

    FileReader与FileWriter分别继承Reader和Writer 以字符为单位广泛用于文件操作的节点流 FileReader类用于从文本文件读数据 每次读入一个字符或者一个字符数组 FileWriter类用于从文本文件写数据 每
  • 学python的第十四天---小蓝(5)

    一 最长公共子序列 dp 二 蓝桥骑士 最长递增子序列 三 蓝肽子序列 最长公共子序列 四 合唱队形 最长递增子序列 五 字符串编辑问题 引入一个难一点的题目 最优包含 一 最长公共子序列 dp Maxn 1005 dp 0 for in
  • 英寸和厘米的换算python_运用python实现英制单位英寸与公制单位厘米互换

    原标题 运用python实现英制单位英寸与公制单位厘米互换 python能实现的东西有很多 其中就有运用python来实现英制单位英寸与公制单位厘米互换 那么具体应用怎么换算呢 下面羽忆教程网为你提供运用python实现英制单位英寸与公制单
  • 【cocosStudio】查看官方示例--调用cocoStudio控件

    理解 将cocoStudio的ui控件转换成cocos的GUI控件来操作 通过widgetFromJsonFile 加载根容器Plane控件 通过Helper seekWidgetByTag 寻找子控件 打开官方示例 打开CMD CD到D