最近装了cocos2d-x开始学习,尝试直接创建Lua项目,并用cocostudio UI编辑器做了一个场景布局,试图在lua脚本中导入这个布局并获取其中的元素来使用。
但是由于是新手,连C++的代码怎么写都搞不清,就直接用Lua来写的坏处是,网上几乎找不到类似的资料或demo,查API文档也是一头雾水,几乎就是胡乱摸索着瞎写=。=
言归正传,如果我们在COCOSTUDIO中,使用UI编辑器制作了一个场景布局之后,选择导出项目,将布局发布出来,可以得到几个使用到的图片资源文件,加一个布局json文件。
然后在lua脚本中,可以这样写来导入:
local uiLayer = cc.Layer:create()
local widget = ccs.GUIReader:shareReader():widgetFromJsonFile("main_scene.json")
uiLayer:addChild(widget)
在2.x版本的cocos中,用的是touchgroup,而在3.x版的cocos2d-x中,已经没有touchgroup了,直接用layer来代替就可以了。
而如果需要获取其中的元素,比如想要获取布局里的某个按钮,可以这样来查找:
local btn = ccui.Helper:seekWidgetByName(widget, "Button_4")
btn:addTouchEventListener(btnCallBack)
由于在3.x中的代码跟2.x大不一样,特此记录。
关于获取到的元素,如果想要增加事件监听,可以查看官方的lua-test里的src/CocoStudioTest/CocoStudioGUITest.lua文件,里面有示例代码可以参考。