一个项目是3.6写的。
用了cocostudio 2.3 来做界面。
今天引擎升级到了3.7,结果运行项目,
切换场景的时候崩溃,
如下是调用堆栈:
libcocos2d.dll!cocos2d::Ref::release() 行 133 C++
libcocos2d.dll!cocos2d::Director::setNextScene() 行 1058 C++
libcocos2d.dll!cocos2d::Director::drawScene() 行 283 C++
libcocos2d.dll!cocos2d::DisplayLinkDirector::mainLoop() 行 1335 C++
libcocos2d.dll!cocos2d::Application::run() 行 92 C++
SuperCute.exe!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpCmdLine, int nCmdShow) 行 17 C++
崩溃在这个函数当中,void Ref::release()
在delete 场景对象时崩溃,
断言的信息是:
Microsoft Visual C++ Runtime Library
Debug Assertion Failed!
Program: …nation\SuperCute\Source\proj.win32\Debug\Output\SuperCute.exe
File: f:\dd\vctools\crt\crtw32\misc\dbgheap.c
Line: 1322
Expression: _CrtIsValidHeapPointer(pUserData)
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
中止(A)重试®忽略(I)
百思不得其解,是怎么回事?
在3.6中是没事的。
// ————————————————————————————————————————————————————————————
经过几个小时的调试和尝试,发现,自定义的场景类不能继承自Scene
否者切换时就会出错。
如下写法的场景类:
class SceneTest1 : public Scene
当 SceneTest1 场景被别的场景替换掉时,就会崩溃。
cocos2d-x 怎么这么多Bug的?
这个bug非常严重。