2.1.4绑定lua时发现的几个问题

  • 本帖最后由 xiulong321 于 2013-7-20 23:03 编辑 *

首先要感谢下2dx维护团队的无私奉献。是你们的贡献造福了广大开发者。现在用来开发游戏的绝大部分都是用 lua脚本的,js效率不行,希望官方能更注重 lua2.1.4的UI和动画又是个福音,但是……。又要说但是了:lol,目前的版本还是有内存泄露和一些BUG的,对lua的绑定也支持的不是很理想。
自己暂时鼓捣了下能跑起来了,累了三个来小时把动画绑完运行 lua 翻译的一个官方cpp的例子,编译和运行时发现几个问题说下:题外话:cocos2dx论坛发来要发结果验证码总是看不见发不了贴!!

第1点:
根据上下文和作者想在log里输出的信息来看可能是次疏忽造成的,应该不是设计的原意吧??

!YP%T%7BV.jpg)

编译时输出的警告信息:
……extensionscocoguilibuiwidgetsuipageview.cpp(131): warning C4390: “;”: 找到空的受控语句;这是否是有意的?
……extensionscocoguilibuiwidgetsuipageview.cpp(173): warning C4390: “;”: 找到空的受控语句;这是否是有意的?

涉及到的UIPageView.cpp中的源代码之一:
if (pSize.width != pvSize.width || pSize.height != pvSize.height);
{
CCLOG(“page size does not match pageview size, it will be force sized!”);
page->setSize(pvSize);
}
警告if 语句后边多了一个 “;” 号

第2点:
绑完运行后点击退出时有意调用一个释放函数出了问题,描述如下:
CCArmature.cpp 文件中 removeBone 方法

void CCArmature::removeBone(CCBone *bone, bool recursion)
{
CCAssert(bone != NULL, “bone must be added to the bone dictionary!”);
bone->setArmature(NULL); // 出错语句
………省略

进入其函数体看下:
void CCBone::setArmature(CCArmature *armature)
{
m_pArmature = armature;
m_pTween->setAnimation(m_pArmature->getAnimation()); // 参数指针是空指针
}

第3点:
在全局搜索 CCArmature 这个类的调用时发现 CCJsonReader.cpp 文件中存在二处如下调用方式:

CCArmature *pAr = CCArmature::create(name); // CCArmature::create 并不是一个单例,每次调用会重新 new 一个出来
CCComRender *pRender = CCComRender::create(pAr, “CCArmature”); // pAr 生成后只是作为参数,并没有其他调用

跟进 CCComRender::create 发现最后将此指针赋值给了一个内部变量 m_pRender
CCComRender::CCComRender(cocos2d::CCNode *node, const char *comName)
{
m_pRender = node;
m_strName.assign(comName);
}

在此类中关于 变量的使用有二处都未见有释放的操作,在哪里被释放的??没找到
void CCComRender::onExit()
{
m_pRender = NULL;
}

CCComRender::~CCComRender(void)
{
m_pRender = NULL;
}

休息看电影去了!!!

好帖要顶,楼主的头像还是不错滴

求分享lua代码部分

有官员回个话不,怎么回话人多数都是灌水的

真的吗?太好了,非常喜欢