在cocos2d-js实现自动绑定cocostudioUI控件与事件

本文介绍如何在cocos2d-js中通过自动化方式,减少手动绑定Cocostudio创建的UI控件与事件的繁琐工作,提升客户端游戏开发效率。
摘要由CSDN通过智能技术生成

一.起因

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

    //加载UI配置文件
    var root = ccs.uiReader.widgetFromJsonFile("res/cocosui/UIEditorTest/UIButton_Editor/UIButton_Editor_1.json");
    this._mainNode.addChild(root);

    //查询back控件,并添事件响应
    var back_label = ccui.helper.seekWidgetByName(root, "back");
    back_label.addTouchEventListener(this.backEvent,this);

    //查询Button_123控件,并添事件响应
    var button = root.getChildByName(root, "Button_123");
    button.addTouchEventListener(this.touchEvent,this);</span>
         
           上面是最为直接访问控件的方法。问题在于如果一个UI界面中有十个、二十个甚至更多的UI控件需要操作的是候,我们做UI的界面、逻辑开发的同学们是否还有时间愉快的玩耍?有没有什么方法不需要去手写这些代码,就能愉快的访问UI组件与接收UI事件响应呢?

二. 思考

        对于手机游戏,特别是卡牌类的游戏来说70%~80%的客户端工作量是在UI布局与逻辑上。
       上面的seekWidgetByNamegetChildByNameaddTouchEventListener函数将大量充斥在客户端代码中,滥竽充数着我们的代码行数。

       自己曾经有过Qt的开发经验。Qt中也有自己的UI设计工具,生成xml的ui配置文件. 对于这个xml有两种使用方式:
       第一种方式: 使用Qt自己的编译工具,将xml翻译生成一个c++代码文件,代码内容就是根据xml中的信息创建各种控件,设置坐标\属性\事件等。
       第二种方式: 在程序中,将xml文件使用UILoader工具类加载进来,成为一个节点。然后调用Qt的函数实现 信号/槽的自动关联。实现信号/槽(事件)自动绑定的原理,是要求写一个事件处理函数,格式为:  
    void on_控件名_信号名(参数);  
      具体如何使用就不细说了,有兴趣的朋友可以自己去看看。根据Qt的这个功能提示,我们何尝不可以在cocos2d-js自动绑定coccostudio输出的ui文件呢?

三. 名命约定

1. 代码名命约定

根据cocos2d-js代码风格,我们约定:
        (1)类成员变量以下划线 "_"开头后面接以驼峰名命格式的英文单词。
例如:_loginButton 、 _closeButton 、 _nameLabel
        (2)类中的私有函数也使用同样的方式。
        例如:_onLoginButtonTouchBegan: function() { ...}

2. UI命名约定

       在cocostudioUI编辑器中,我们遵循上述代码中成员变量的命名规范。将需要由代码访问的控件取名为"_"开头,后面接以驼峰名命格式的英文单词。 请看下图:


  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值