升级到3.3rc1遇到的问题

前三个问题应该都是因为我没有 把 与framework 同目录的 cocos 文件夹 复制进src 项目导致的。

第四个问题是 因为执行 node:setTouchEnabled(true) 之后 从来没有添加到 舞台上 引起的 。

ok 结贴!

---------------------------------
周末把之前3.2rc0 的游戏升级 到了3.3rc1 遇到了点问题。确认下是我使用的问题还是引擎的bug

  1. 路径的问题。使用xcode 运行项目 ,提示找不到app.MyApp.lua 在AppDelegate 中 加入src的路径解决

2.framework.platform.ios.lua 中提示找不到 cocos.cocos2d.luaoc,改为require(cc.PACKAGE_NAME … “.luaoc”)解决
(把)
3.因为有用到位操作 ,3.3没用使用luajit 所以找不到 bit ,添加 bitop 解决(顺便问下这个不会对64-bit产生影响吧。。?)

4.LuaEventNode 的问题

bool LuaEventNode::isRunning() const
{
 if (_node) //  这里的node 的ReferenceCount 经常出现0或者一个很大的数。
    {
 return _node->isRunning();
    }
 return false;
}

我这里 稍微修改了一下 使其不至于 崩溃

_node && _node->getReferenceCount()>0 && _node->getReferenceCount() < 2000000

其实关于referencecount 还有一些疑问。因为Ref中 已经用 CCASSERT 判断大于0 了,为什么还会出现 0 再减一导致 溢出产生极大的情况 。同样的崩溃 也会出现在 getParent的方法中

最后一个疑问就是,这些改完之后,测试了下安卓的版本,经常还是出现崩溃 如图。

不知道是不是我修改的 LuaEventNode 在安卓中不生效 还是其他原因,会不会跟 安卓的Application.mk 中的 CC_USE_RUNTIME := 0 有关,(这个CC_USE_RUNTIME是指的哪个模块呢?)另外问一下,安卓的native c++ 部分有没有什么好 的调试的教程啊。环境是 mac+adt

麻烦楼主确认一下使用的版本,你所描述的bug都是3.3rc0存在的而在3.3rc1里已经修改了的。如果你以前装过rc0,请卸载后再安装,否则有可能无法覆盖原来的版本。

或者是你仍然保留了原来的framework没有更新到最新的版本,也是会出现上述bug的

我使用的是 github上的最新版本 framework 使用的也是新的。第二个问题应该是 我只是把 framework 复制到项目里了。没有复制cocos里的lua文件。。现在主要是第四个问题,经常出现。安卓上调试好痛苦啊。

第四个问题也确实是rc0到rc1的一个重要的修改之一,我们从原理和实践上都反复验证过了,也经过了很多实际项目的开发者的验证。
请你再确认一下,在你的项目里面,frameworks/cocos2d-x/external/lua/quick目录下的文件,和最新版本是否一致。

好的 我再确认一下

版本是最新的,没有问题
刚才用xcode 调试了下,(安卓的调试真是很无奈:10:
感觉上问题应该是出在这里

因为自己做了个滑动层组件 (ccs的滑动层 如果需要显示几百个东西的时候 就要new几百个对象,吃不消)只显示可以被看到的子组件,而且会提前创建一些子组件作为缓存

所以就导致了可能缓存的对象并没有被添加到舞台上,但是创建对象的时候却 已经setTouchEnabled 了,然后销毁这个组件的时候 会把缓存的子组件都node->release了,所以并没用执行cleanup。也就没有从 touchEventManager的vector里移除,然后就 你懂的。。。

说简单的重现方法就是 newNode 然后retain 然后 setTouchEnabled 不要加到舞台上,然后release() 应该就是可以了。
目前我把 子组件release的时候 setTouchEnabled(false) 应该是没有问题了
另外也感谢 七月 及时的回复

确实没有执行cleanup的话会有问题,因为现在quick的触摸机制必须做为2dx的一个外挂模块而不能对原来的node进行修改,所以必须依赖cleanup来清理。你现在的处理方式是没有问题的。

遇到了第四个问题,可是并没有用到楼主所说的这种操作
“执行 node:setTouchEnabled(true) 之后 从来没有添加到 舞台上”
:6: