cocos2dx-3.0 版本,如果在lua中,获取 CocoStudio 生成的对象?

大家好,在下刚接触cocos2dx,我谢了一个demo程序,有一些地方不是很清楚,想咨询下各位的。

我使用的是 cocos2d-x-3.0alpha1 的引擎,以及 CocoStudio 1.1.0.0 的版本。 我用CocoStudio 的界面编辑器生成了一个界面布局,a.json,然后使用修改了samples里面的HelloLua的脚本。修改了main函数的代码,使用如下代码

local sceneGame = cc.Scene:create()

local l_xx = ccs.UILayer:create()

local l_uiReader = ccs.GUIReader:getInstance()

local l_hWnd = l_uiReader:widgetFromJsonFile("a.json")

l_xx:addWidget(l_hWnd)

sceneGame:addChild(l_xx)

cc.Director:getInstance():runWithScene(sceneGame)

在程序里面,成功把界面编辑器里面的代码run起来了。

我的问题是,a.json里面,有一个"classname": "TextArea", "name": "_Text", 的节点。我如何才能获取这子节点的对象,并且设置这个文本框的内容?


通过调用函数 l_hWnd:getChildByName('_Text') 可以得到这个节点,但源码里面的实现是

toluafix_pushusertype_ccobject(tolua_S,ID, luaID, (void*)ret,"UIWidget");

push到lua里面的类型是‘UIWidget’, 我如何才能得到 TextArea 对应的控件对象呢?

这个你可以强制转换,lua我还不会,所以实现不清楚。3.0对很多东西都做了修改,用起来会更舒服。

在c++代码里面做类型强制转换是比较方便的, 在lua里面就不知道怎么实现了。在C++push对象到lua里面的时候,把对象类型的字符串也push进去了。

TextArea 应该是uiwidget 下边的一个子类吧

另外,在学习cocos2dx的时候,感觉3.0的2.x版本的代码组织更有条例了,阅读起来更方便,赞一个。