• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

[zz]cocos2d-x-2.2.0版本的CocoStudio的GUI绑定到lua

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

所有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拷贝到samples\Lua\HelloLua\Resources下

将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类型的指针)

[plain] view plaincopy
  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
  1. local layer = ccs.newLayer("testUI/testUI.json")  

 

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

[javascript] view plaincopy
  1. local button = layer:getButton("test_button")  


或者


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
lua中冒号(:)与点号(.)的区别发布时间:2022-07-22
下一篇:
linux安装并且设置环境lua环境变量发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap