zoukankan      html  css  js  c++  java
  • [zz]cocos2d-x-2.2.0版本的CocoStudio的GUI绑定到lua

    所有testcpp里的widget示例都已实现,实现了一个GuiExample,其他的就留给大家去熟悉.其实无非就是将c代码拷贝到lua里然后修改一点...

    代码,pkg和示例

     

    使用步骤:

    1.解压下载包

    2.将extensions下的Cocostudio/GUI文件夹备份,然后用解压的GUI文件夹覆盖原文件夹

    3.将tools/tolua++文件夹备份,将pkg.zip解压到tools/tolua++下,然后运行命令行编译出LuaCocos2d.cpp(这步编译不会的...去百度)

    4.编译cocos2d-x工程,就可以在lua里使用Cocostudio的GUI里的类了

     

    使用Hellolua工程跑示例程序:

    将bin下面的所有文件夹和lua拷贝到samplesLuaHelloLuaResources下

    将hellolua项目里的AppDelegate.cpp的函数applicationDidFinishLaunching()修改一下

    1. bool AppDelegate::applicationDidFinishLaunching()  
    2. {  
    3.     // initialize director  
    4.     CCDirector *pDirector = CCDirector::sharedDirector();  
    5.     pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());  
    6.       
    7.     CCEGLView::sharedOpenGLView()->setDesignResolutionSize(480, 320, kResolutionNoBorder);  
    8.   
    9.     // turn on display FPS  
    10.     pDirector->setDisplayStats(true);  
    11.   
    12.     // set FPS. the default value is 1.0/60 if you don't call this  
    13.     pDirector->setAnimationInterval(1.0 / 60);  
    14.   
    15.     // register lua engine  
    16.     CCLuaEngine* pEngine = CCLuaEngine::defaultEngine();  
    17.     CCScriptEngineManager::sharedManager()->setScriptEngine(pEngine);  
    18.   
    19.     std::string path = CCFileUtils::sharedFileUtils()->fullPathForFilename("hellogui.lua");  
    20.     pEngine->executeScriptFile(path.c_str());  
    21.   
    22.     return true;  
    23. }  


    然后run

     

     

    lua中UIWidget注册回调函数的方法

    UIWidget :registerEventScript

     

    lua回调示例这样 (这里和v2.1.5不一样,多返回了一个调用者的UIWidget类型的指针)

    1. function HandleEvent(type,widget)  
    2.       if type == "pushDown" then  
    3.           -- do something  
    4.       end  
    5. end  



    现有eventType为
    "pushDown"

    "move"

    "releaseUp"

    "cancelUp"

    "longClick" (这个studio还未实现)

    "selected"

    "unSelected"

    "percentChanged"

    "attachWithIME"

    "detachWithIME"

    "insertText"

    "deleteBackward"

    "berthToLeftBottom"

    "berthToLeftTop"

    "berthToRightBottom"

    "berthToRightTop"

    "berthToLeft"

    "berthToTop"

    "berthToRight"

    "berthToBottom"

    "bounceOver"

    "bounceToLeftBottom"

    "bounceToLeftTop"

    "bounceToRightBottom"

    "bounceToRightTop"

    "bounceToLeft"

    "bounceToTop"

    "bounceToRight"

    "bounceToBottom"

    "initChild"

    "updateChild"

    "scrollToTop"

    "scrollToBottom"

    "scrollToLeft"

    "scrollToRight"

    增加CCSSceneReader绑定

    CCSceneReader补丁pkg

    使用方法:

    1.先备份tools/tolua++文件夹然后将补丁解压到tools/tolua++下

    2.运行命令行编译出LuaCocos2d.cpp

    3.将工作项目链接pthreadVCE2.lib和libchipmunk.lib库,编译即可

     

     

    更新日志:

    11.13 目前getChild有一个错误,无法返回LabelAtlas的控件,修改UILabelAltas的源码函数

    const char* UILabelAtlas::getDescription() const
    {
        return "LabelAtlase"; //去掉后面那个e
    }

    或者直接修改ccs的lua库,CCSLayerExtend里的local widget_name,["LabelAtlase"]  = "UILabelAtlas", --加上e

     

    前段时间,无意有人提到能否把前面gui的lua绑定封装到quick里,然后就去看了下quick.觉得真心强大.就研究了下quick,然后顺利完成了ccs的gui库的封装.继承了quick的风格.

    很不幸的是,本来准备将代码pull到quick的,但是quick作者在develop分支中去掉了对ccs的支持,并且不打算支持ccs.加之最近项目启动了没有多少时间来搞一套quick的,就先把现有的一些东西分享出来吧.

    封装其实很简单,就是在原来基础上扩展了一点点的内容.

    注意:本封装不支持quick,即时你将lua拷入quick,也使用不了.

    现有功能.

    1.读取一个ui到lua中

     

    [javascript] view plaincopy在CODE上查看代码片派生到我的代码片
    1. local layer = ccs.newLayer("testUI/testUI.json")  

     

    2.获得一个layer中的控件.比如UIButton

    [javascript] view plaincopy在CODE上查看代码片派生到我的代码片
    1. local button = layer:getButton("test_button")  


    或者

    [javascript] view plaincopy在CODE上查看代码片派生到我的代码片
    1. local button = layer:getChild("test_button")  

     

    getChild会自动返回child的类型

     

    3.可以将一个ui中的所有checkbox分组

    [javascript] view plaincopy在CODE上查看代码片派生到我的代码片
    1. function CCSLayerExtend:insterGroup(groupId,...)  
    2. ...  
    3. end  


    组checkbox回调时调用

    [javascript] view plaincopy在CODE上查看代码片派生到我的代码片
    1. function CCSLayerExtend:GroupSelected(groupId,checkbox)  
    2. ...  
    3. end  


    设置默认开启的checkbox

    [javascript] view plaincopy在CODE上查看代码片派生到我的代码片
    1. function CCSLayerExtend:GroupDefault(groupId,checkbox)  
    2. ...  
    3. end  

     

    ccs的framework代码

    使用本代码前,先绑定ccs到lua,http://blog.csdn.net/rrobin/article/details/12101349

     

     

     

     

    本来不打算随c2dx的版本更新再同步发布ccs的绑定的...但这一次将ccs的api封装到了lua,所以就一并放出来吧.

     首先是源码和补丁,安装方法请参考2.2.0的绑定.传送门

     然后是lua封装以及示例.

     由于放出比较急,没有api文档,大家就自己去看framework文件夹吧,新的UIListViewEx没有示例,因为2.2.1版本官方也没有示例...

     

    from: http://blog.csdn.net/rrobin/article/details/12101349

  • 相关阅读:
    涉猎
    linq to sql中的自动缓存(对象跟踪)
    Java的起源和发展
    Java为什么需要保留基本数据类型
    JDK各版本新增的主要特性
    【转】整理:著名软件是使用什么语言写的?
    Struts2框架学习
    json格式
    sqlserver开窗函数改造样例
    说一下这次的求职经历。
  • 原文地址:https://www.cnblogs.com/wishing/p/3449745.html
Copyright © 2011-2022 走看看