quick-cocos2d-x 绑定C++自定义类

本文记录了作者初次使用Lua与Quick-Cocos2d-x遇到的问题及解决过程,特别是C++到Lua的绑定问题,包括如何解决addChild方法的参数错误以及自定义C++类加入Layer后的中断错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初次接触lua和quick-cocos2d-x,想要用用cocosWidget,然后就碰到C++到lua的绑定问题了。

看了下网上的教程,http://cn.cocos2d-x.org/tutorial/show?id=513

由于时间紧迫,没去看官方的文档和基本原理,就按上面的流程走。

说说流程和问题。

进入路径:quick\lib\extra\luabinding,找到cocos2dx_extra_luabinding.tolua,里面都有extra的一些c++类,

只要参考那些类来写就没问题。

结果好像没问题,在代码里敲入,cc.MySprite:createMS("xxx.png"),然后addChild

问题就来了,addChild老是报错,参数不对。输出创建的类MySprite,是userdata。

这问题纠结了好久,终于发现cocos2dx_extra_luabinding.tolua里面的HttpRequest类继承的写法是:cc.Ref!

OK,我也把我的自定义类继承写法从:cocos2d::Sprite改成:cc.Sprite

重新编译,跑起来,终于没问题,模拟器上能正常显示被加上的图片。

其实只是高兴了一下,问题又来了!

自定义的C++类创建并加入layer里面后,虽然能看到它了,但即刻跟着报了一个中断错误:Assert: Node still marked as running on node destruction! Was base class onExit() called in derived

网上的做法是去掉onExit(),这里不多说了,还是花点时间去研究cocos2d-x lua 的绑定吧。