Cocos2d-x的几个注意点
这段时间渐渐地从剑II的项目中退出来,来说研究一些cocos2d-x相关的内容。
Cocos2d-x虽然是使用C++来实现的,但是代码显得很怪异。比如下面的代码:
do |
这里之所以要用do...while
,仅仅只是为了使用CC_BREAK_IF这个宏。非但打乱了C++的语法,而且也是代码复杂化了。
另外一个需要注意的地方是它的对象的生命周期管理,和C++通行的逻辑不同。看下面的代码:
class CSpriteSheetMgr{ |
如果你以为m_pBatchNodeDic的生命周期是跟随类的实例的话,那么就错了。在 每一个Message Loop之后,cocos2d-x引擎都会尝试去释放这类对象 ,可能你还没有用到,他就已经无效了。这个就是cocos2d-x的内存管理模型Reference Count and AutoReleasePool
正确的,需要写成:
CSpriteSheetMgr::CSpriteSheetMgr() |