位置: 编程技术 - 正文

在cocos2d-js实现自动绑定cocostudioUI控件与事件(cocos jsc)

编辑:rootadmin

推荐整理分享在cocos2d-js实现自动绑定cocostudioUI控件与事件(cocos jsc),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:cocos2d教程,cocos2d schedule,cocos2dx怎么用,cocos2d教程,cocos javascript,cocos2dx-js,cocos2d-js教程,cocos2dx-js,内容如对您有帮助,希望把文章链接给更多的朋友!

在cocos2d-js实现自动绑定cocostudioUI控件与事件(cocos jsc)

一.起因

在客户端游戏开发中最让人恶心的工作就是UI相关的东西,虽然有了像cocostudio这样的可视化工具,但界面中有大量需要由代码访问的控件的时候,需要写太多重复的代码例如:

上面是最为直接访问控件的方法。问题在于如果一个UI界面中有十个、二十个甚至更多的UI控件需要操作的是候,我们做UI的界面、逻辑开发的同学们是否还有时间愉快的玩耍?有没有什么方法不需要去手写这些代码,就能愉快的访问UI组件与接收UI事件响应呢?二. 思考 对于手机游戏,特别是卡牌类的游戏来说%~%的客户端工作量是在UI布局与逻辑上。 上面的seekWidgetByName、getChildByName、addTouchEventListener函数将大量充斥在客户端代码中,滥竽充数着我们的代码行数。 自己曾经有过Qt的开发经验。Qt中也有自己的UI设计工具,生成xml的ui配置文件. 对于这个xml有两种使用方式: 第一种方式: 使用Qt自己的编译工具,将xml翻译生成一个c&#;&#;代码文件,代码内容就是根据xml中的信息创建各种控件,设置坐标属性事件等。 第二种方式: 在程序中,将xml文件使用UILoader工具类加载进来,成为一个节点。然后调用Qt的函数实现信号/槽的自动关联。实现信号/槽(事件)自动绑定的原理,是要求写一个事件处理函数,&#;式为: 具体如何使用就不细说了,有兴趣的朋友可以自己去看看。根据Qt的这个功能提示,我们何尝不可以在cocos2d-js自动绑定coccostudio输出的ui文件呢?三. 名命约定1. 代码名命约定根据cocos2d-js代码风&#;,我们约定: (1)类成员变量以下划线 "_"开头后面接以驼峰名命&#;式的英文单词。例如:_loginButton 、 _closeButton 、 _nameLabel (2)类中的私有函数也使用同样的方式。 例如:_onLoginButtonTouchBegan: function() { ...}2. UI命名约定 在cocostudioUI编辑器中,我们遵循上述代码中成员变量的命名规范。将需要由代码访问的控件取名为"_"开头,后面接以驼峰名命&#;式的英文单词。 请看下图:3. ccui控件事件命名ccui.Widget事件注册有两种:1). 常规的touch事件有:ccui.Widget.TOUCH_BEGAN 触摸开始 (按下)ccui.Widget.TOUCH_MOVED 触摸移动 (移动)ccui.Widget.TOUCH_ENDED 触摸结束 (抬起)ccui.Widget.TOUCH_CANCELED 触摸取消 (一般没用)我们使用widget.addTouchEventListener(selector, target)给控件注册触摸事件,设置回调函数.2). 控件特殊事件:比如CheckBox的:ccui.CheckBox.EVENT_SELECTEDccui.CheckBox.EVENT_UNSELECTED又如:TextField的:ccui.TextField.EVENT_ATTACH_WITH_IMEccui.TextField.EVENT_DETACH_WITH_IMEccui.TextField.EVENT_INSERT_TEXTccui.TextField.EVENT_DELETE_BACKWARD这类事件需要使用widget.addEventListener(selector, target)来注册。这里的selector就是我们的回调函数,需要我们取名并实现这个函数,事件类型是通过参数来识别的:这个"_onButtonEvent"就是我们为事件函数取的名字,如果我们按:【前缀&#;控件名(取掉下划线)&#;事件名】给控件事件函数取名举例说明:控件名字为:_button事件名则为:_onButtonTouchBegan、_onButtonTouchMoved、_onButtonTouchEnded四. 代码实现有了上面的约定,我们可以开始实现UI的绑定了。1. 定义一个自动绑定的控件列表,我们这里列出了常用的控件类型与事件名字。这个sz.UILoader.widgetEvents数组可以根据需要自己添加需要绑定的组件。2.逻辑流程1). 使用loader载入ui文件并传入target为当前layer。所有事件和控件变量都将绑定到target上。2). 遍历载入后的子节点(childNode),检查名字前缀是否以”_”开头。并且该节点类型是否在widgetEvents数组中。3). 将childNode绑定到target上。4). 提取childNode事件函数名,检查target是否有这些函数存在。5). 为widgetNode注册事件响应。6). 加载类接收到事件响应,转发事件到对应的target的事件处理函数上。3.UI加载类的具体实现所有东西都已经准备好了, 我们看看怎么在具体的代码中使用:现在看看我的客户端代码是不是比之前的简洁多了!五.前缀的问题上面花了大量文字讲解了关于命名的问题,有人可能会觉得使用这个UILoader会强奸他的代码。因为他没有使用“_”做为成员变量前缀,或是成员变量前缀不是“_”而是“m_”。为了不强奸别人的代码,提供了下面的选项:最后一个可选参数options对象,有两个属性eventPerfix 、memberPrefix用于配置事件前缀和成员变量前缀六. 前缀&#;控件名&#;Event 有些时候,不想将TouchBegan、TouchMoved、TouchEnded分成三个响应函数分别来写,而是使用原来事件参数来判断事件类型。这时你只需要实现以【前缀&#;控件名&#;Event】的函数名例如:控件名为_loginButton, 定义一个函数如:这时UILoader会优先使用这个事件处理函数,如果同时也实现了一个"_onLoginButtonTouchBegan",它将不会被执行。这样再次阻止sz.UILoader强奸事件的发生,可以兼容你原来的代码。完整代码可以到githut下载:

Cocos2d-js入门学习笔记 Cocos2d-js入门学习笔记哐哐哐,小白开工啰先记录下如何搭建环境及第一个HELLOWorld本篇励志名言:智者不只发现机会,更要创造机会。[培根]欢迎转载转

Cocos2d-x碰撞检查与消灭的实现 #ifndef__HELLOWORLD_SCENE_H__#define__HELLOWORLD_SCENE_H__#includecocos2d.husingnamespacecocos2d;classHelloWorld:publiccocos2d::CCLayerColor{

非常好的cocos2d-x开发学习教程 COCOS2D开发者文档cocos2d,开发,IT,程序,教程,动画,游戏,文档,cocos2dxCOCOS2D-X开发者文档,一次下载不需要联网,所有资源单机,教程资源非常详细,包括:coc

标签: cocos jsc

本文链接地址:https://www.jiuchutong.com/biancheng/369142.html 转载请保留说明!

上一篇:cocos2d-x window实现鼠标移动 键盘事件

下一篇:Cocos2d-js入门学习笔记(cocos2dx4.0入门)

  • 房屋出租需要交税多少起征
  • 小规模暂估入库的账务处理
  • 公积金贷款金额少怎么办
  • 员工意外险费用
  • 年终奖是否列入社保基数
  • 进口增值税电子税单抵扣
  • 工会经费需要计税吗
  • 非居民企业所得税税率10%
  • 车辆购置税完税证明二维码用什么扫
  • 集团财务公司资金管理
  • 所得税汇算清缴时间期限
  • 增值税进项销项每个月需要结转吗
  • 企业注销合适还是转让出去合适
  • 工资未发放是否可以仲裁
  • 消费税和增值税的不同之处
  • 暂估成本冲回之后成本变为负的
  • 公司成立之后有人投资怎么做分录?
  • 基金赎回未到账可继续买吗?
  • 涂料厂生产销售的涂料要交消费税吗
  • 红字信息表跨越可以撤销吗
  • 回收站已损坏 是否清空该驱动,点鼠标无法操作
  • gh树形数据是什么意思
  • 财务费用增加记借方还是贷方
  • 刷卡机怎么收费的吗
  • 宏基笔记本一键恢复系统
  • 进程核心栈
  • 小规模纳税人税控设备可以抵扣吗设备
  • executor进程
  • 白兰花的养殖方法和注意事项和病虫害
  • 赠送现金券是否违法
  • 增值税专用发票怎么开
  • 非合理损耗怎么做分录
  • 短视频小程序源码
  • php对象的概念
  • 充电桩折旧年限是多少年
  • 少收的应收款和应收账款
  • 年报数据和四季度数据一样吗
  • 利润分配财务管理
  • 奖金属于职工福利薪酬吗
  • 现金流量表里包括应收票据吗
  • 不可抵消
  • 个体工商户转企业政策
  • 存货出入库需要什么凭证
  • 其他应收款增加现金流量表怎么填
  • 会计的借记和贷记什么意思
  • 入库的残料价值包括哪些
  • 其他应收款借方表示增加吗
  • 非居民企业的所得一律适用20%的企业所得税税率
  • 员工的提成
  • 翻唱歌曲发行至国外的好处
  • 政府部门城投公司融资安全吗
  • 冲减以前年度利润
  • 个体户是否要做账务处理
  • 公司交的物业费计入什么会计科目
  • 预收账款常见的问题
  • 建筑公司收到的工程服务发票怎么做账
  • 2020年专项扣除怎么填
  • 软件测试取费标准
  • 待处理财产损益是备抵类科目吗
  • 金税盘里显示有报税资料怎么处理
  • 会计做账工作总结
  • 小企业会计建账分录
  • 私营企业会计退休年龄50还是55
  • 微软在印度的投资
  • ubuntu20.04软件安装
  • win10新界面曝光
  • xp系统如何隐藏我的电脑
  • win7浏览器主页怎么设置
  • win8.1死机卡住不动
  • win11连接win7共享打印机
  • 安装win7旗舰版变了家庭版
  • win7 ping一般故障
  • cocos2dx 3.17
  • jquerycuishifeng
  • unity碰撞抖动怎么解决
  • node 操作mysql
  • vr project
  • javascript document.execCommand() 常用解析
  • 形容有待完善的词语
  • 环保税2018年开征文件
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设