lua使用问题

发现在LayerTest中有__CCRGBAProtocol__ 这个属性
但是我找CCNodeRGBA的pkg文件,明明没有这个属性的定义,可是LuaCocosd.cpp中,在CCNodeRGBA中却有这个属性的绑定
/* get function: CCRGBAProtocol of class CCNodeRGBA /#ifndef TOLUA_DISABLE_tolua_get_CCNodeRGBA___CCRGBAProtocol__static int tolua_get_CCNodeRGBA___CCRGBAProtocol__(lua_State tolua_S)
这是为什么呢???

然后我看CCNode,明明有getPosition(x, y)和setPosition(x, y)的绑定,但是却无法使用,这又是为什么呢?

感觉看pkg和LuaCocos2d.cpp里面的有不一样,这样子有时候我都不知道该如何使用是好啊!!!

您好,该问题已经提交至相关人员,感谢您对cocos引擎的支持。

1.CCNodeRGBA属于多继承,CCRGBAProtocol按照tolua++的规则会成为CCNodeRGBA的成员,所以会有tolua_get_CCNodeRGBA___CCRGBAProtocol__这个方法。在脚本层,你可通过nodeObj.__CCRGBAProtocol__调用到__CCRGBAProtocol__ 中的方法。
2.关于CCNode的setPositiongetPosition这两个接口,你是怎么使用的呢?有相应的报错信息吗?

local x, y = 6, 12;
sister1:getPosition(x, y);
print(x, y);
sister1:setPosition(18, 18);

sister1是CCSprite对象,使用getPosition(x, y)的话,x和y的值还是6和12,没发生变化。使用setPosition(18, 18)倒是可以了……

ocal account = self:getWidgetByName(COCOSGUI.loginLayer.currentAccount);
account = tolua.cast(account, “Label”);
account:setPosition(16, 15);

account是Label对象,调用setPosition(16, 15)之后,将会报错, LUA ERROR: :103: error in
function ‘setPosition’.
argument #2 is ‘number’; ‘const CCPoint’ expected.

啊,还是得靠自己看源码啊……
UIWidget重写了CCNode的setPosition,所以继承CCNode的就可以使用setPosition(x, y),继承UIWidget的就不行了啦……这个很容易误导人的说 :10: