热更新里面的那两个cc.eventManager你是怎么改的?
请教一下
你们这个版本把google_breakpad编译进去并且支持了吗?我看有google_breakpad文件夹。
热更新里的怎么改?
有个崩溃, 想向引擎组确认下。在CCEventDispatcher.cpp中的removeEventListener中崩溃了,崩溃栈信息如下:
ChariotClient_Win32_Debug.exe!v8::Local<v8::Object>::New(v8::Isolate * isolate, v8::Object * that) Line 8941 C++ Symbols loaded.
ChariotClient_Win32_Debug.exe!v8::Local<v8::Object>::New(v8::Isolate * isolate, const v8::PersistentBase<v8::Object> & that) Line 8932 C++ Symbols loaded.
ChariotClient_Win32_Debug.exe!se::ObjectWrap::handle(v8::Isolate * isolate) Line 67 C++ Symbols loaded.
ChariotClient_Win32_Debug.exe!se::Object::_getJSObject() Line 466 C++ Symbols loaded.
ChariotClient_Win32_Debug.exe!se::internal::seToJsValue(v8::Isolate * isolate, const se::Value & v, v8::Local<v8::Value> * outJsVal) Line 80 C++ Symbols loaded.
ChariotClient_Win32_Debug.exe!se::internal::seToJsArgs(v8::Isolate * isolate, const std::vector<se::Value,std::allocator<se::Value> > & args, std::vector<v8::Local<v8::Value>,std::allocator<v8::Local<v8::Value> > > * outArr) Line 54 C++ Symbols loaded.
ChariotClient_Win32_Debug.exe!se::Object::call(const std::vector<se::Value,std::allocator<se::Value> > & args, se::Object * thisObject, se::Value * rval) Line 484 C++ Symbols loaded.
ChariotClient_Win32_Debug.exe!se::Object::detachObject(se::Object * obj) Line 728 C++ Symbols loaded.
ChariotClient_Win32_Debug.exe!ScriptingCore::releaseScriptObject(cocos2d::Ref * owner, cocos2d::Ref * target) Line 110 C++ Symbols loaded.
ChariotClient_Win32_Debug.exe!cocos2d::EventDispatcher::releaseListener(cocos2d::EventListener * listener) Line 1577 C++ Symbols loaded.
ChariotClient_Win32_Debug.exe!cocos2d::EventDispatcher::removeEventListener(cocos2d::EventListener * listener) Line 701 C++ Symbols loaded.
> ChariotClient_Win32_Debug.exe!cocos2d::ui::Widget::setTouchEnabled(bool enable) Line 586 C++ Symbols loaded.
ChariotClient_Win32_Debug.exe!js_cocos2dx_ui_Widget_setTouchEnabled(se::State & s) Line 1064 C++ Symbols loaded.
ChariotClient_Win32_Debug.exe!js_cocos2dx_ui_Widget_setTouchEnabledRegistry(const v8::FunctionCallbackInfo<v8::Value> & _v8args) Line 1070 C++ Symbols loaded.
v8.dll!0f7441b0() Unknown No symbols loaded.
[Frames below may be incorrect and/or missing, no symbols loaded for v8.dll] Annotated Frame
出现概率不高,看现象应该是listener对象被GC了。怀疑是因为这个函数调用了两次releaseListener, 而这两次的调用都会触发releaseScriptObject。而第二次的releaseScriptObject调用时,listener对应的jsobj已经被gc了。因为从MSVC调试器上看这个jsobj已经无效了,对象数据区域全部变成0xCDCDCDCD之类的数据,其实就是被销毁了。所以第二次releaseScriptObject时就崩溃了。由此看releaseScriptObject被多调用了一次。我目前是把这个函数中的removeListenerInVector闭包函数中的releaseListener(l)改成了l->release()。
是不是这样的?
哪个函数调用了两次 releaseListener ?
你用的creator是哪个版本?
就是这个版本1.8.2.rc2,是EventDispatcher::removeEventListener函数调用的。只是崩溃出现的机率不高,但流程上是一样的。不太了解垃圾回收的时机原理。
提一个似乎是一直存在的bug, 我在动画里操作了Widget的属性,比如Widget.enabled之类的,关闭动画后,所有节点树上的节点的Widget组件全部失效了,需要重新一个个勾上,很蛋疼
整个项目组与玩家共同集体期待1.8.2的正式版能尽快出来……IOS各种崩溃情况,已经无法控制了~~
同顶.ios各种js底层崩溃.
同样ios崩的飞起,1.8.2 rc2
求官方大大关注啊
已经发了1.8.2正式版
1.7.0 的客户端 可以直接热更到 1.8.2 吗?
热更不行的
我们马上修改链接。
1.8.2 正式版发布了,本帖已经很长了,就关闭吧。有需求欢迎另外发帖。