Cocos2d-x removeChild works wierd
Cocos2d-x removeChild works wierd
我已经有这行代码
for (auto view : views)
{
view->update(deltaTime);
if (view->isDead())
{
trash.push_back(view);
removeChild(view, true);
}
}
它在removeChild(view, true);
线路上破裂。
这是我的堆栈跟踪。
ucrtbased.dll!00007ffab25ac2f1() Unknown
ucrtbased.dll!00007ffab25af8a5() Unknown
TankGame.exe!operator delete(void * block) Line 21 C++
TankGame.exe!operator delete(void * block, unsigned __int64 __formal) Line 16 C++
TankGame.exe!WorldModel::`scalar deleting destructor'(unsigned int) C++
TankGame.exe!std::_Ref_count<WorldModel>::_Destroy() Line 153 C++
TankGame.exe!std::_Ref_count_base::_Decref() Line 113 C++
TankGame.exe!std::_Ptr_base<WorldModel>::_Decref() Line 339 C++
TankGame.exe!std::shared_ptr<WorldModel>::~shared_ptr<WorldModel>() Line 567 C++
TankGame.exe!std::shared_ptr<WorldModel>::operator=(std::shared_ptr<WorldModel> && _Right) Line 555 C++
TankGame.exe!ZombieModel::~ZombieModel() Line 14 C++
[External Code]
> TankGame.exe!ZombieView::~ZombieView() Line 11 C++
[External Code]
libcocos2d_v3.13.1_Windows_10.0.dll!cocos2d::Ref::release() Line 138 C++
libcocos2d_v3.13.1_Windows_10.0.dll!cocos2d::Vector<cocos2d::Node * __ptr64>::erase(__int64 index) Line 443 C++
libcocos2d_v3.13.1_Windows_10.0.dll!cocos2d::Node::detachChild(cocos2d::Node * child, __int64 childIndex, bool doCleanup) Line 1119 C++
libcocos2d_v3.13.1_Windows_10.0.dll!cocos2d::Node::removeChild(cocos2d::Node * child, bool cleanup) Line 1020 C++
libcocos2d_v3.13.1_Windows_10.0.dll!cocos2d::Sprite::removeChild(cocos2d::Node * child, bool cleanup) Line 778 C++
TankGame.exe!WorldView::update(float deltaTime) Line 51 C++
TankGame.exe!GameScene::update(float deltaTime) Line 55 C++
libcocos2d_v3.13.1_Windows_10.0.dll!cocos2d::Scheduler::scheduleUpdate::__l2::<lambda>(float dt) Line 285 C++
[External Code]
libcocos2d_v3.13.1_Windows_10.0.dll!cocos2d::Scheduler::update(float dt) Line 861 C++
libcocos2d_v3.13.1_Windows_10.0.dll!cocos2d::Director::drawScene() Line 274 C++
libcocos2d_v3.13.1_Windows_10.0.dll!cocos2d::DisplayLinkDirector::mainLoop() Line 1397 C++
libcocos2d_v3.13.1_Windows_10.0.dll!cocos2d::GLViewImpl::OnRendering() Line 482 C++
libcocos2d_v3.13.1_Windows_10.0.dll!cocos2d::GLViewImpl::Render() Line 474 C++
TankGame.exe!Cocos2dRenderer::Draw(int width, int height, float dpi, Windows::Graphics::Display::DisplayOrientations orientation) Line 137 C++
TankGame.exe!CocosAppWinRT::OpenGLESPage::StartRenderLoop::__l2::<lambda>(Windows::Foundation::IAsyncAction ^ action) Line 272 C++
[External Code]
我无法从我那里得到想要的东西。它称为视图破坏者,仅此而已!bam!崩溃!视图的破坏者是空的,我完全迷失了。
我敢打赌,您多次将代码称为代码。
然后,在调用removechild(视图,true)后,自动视图已被删除,并且您没有从视图中删除视图。当然,当您进行Trice时,该程序将崩溃,因为您正在尝试删除已删除的视图。
如果我的猜测是错误的,则需要发布更多代码。
P.S:您的代码样式在COCOS2D-X中不是很好。您无需像Java那样收集垃圾。您需要在Cocos2D-X中研究内存管理。
相关文章:
- (c )我的输出.txt文件具有WIERD间距
- 用 (float&)int works,(float const&)int 转换像 (float)int 代替?
- Cocos2d-x removeChild works wierd
- C 比较两个INT,错误或Wierd End
- 运行build_android.sh时" C compiler works... no"错误
- Wierd行为,相同的代码在一个地方失败,主要起作用
- gettimeofday on uLinux wierd behaviour
- const T{};works,const T;当T是非POD时失败
- 使用 getline() 的 Wierd 行为
- C++中getline的Wierd行为
- Wierd combination
- unsigned short和signed short比较wierd行为
- 错误:static_assert unordered_multimap的"This hash only works for enumeration types"失败
- Wierd指针构造
- 打印字符数组末尾时的Wierd结果(“210”)
- 从c++ Console App Works调用c++ DLL,从c# Console App调用有堆栈溢出