diff --git a/Easy2D/Msg/KeyMsg.cpp b/Easy2D/Msg/KeyMsg.cpp index f21b55e1..f123ff20 100644 --- a/Easy2D/Msg/KeyMsg.cpp +++ b/Easy2D/Msg/KeyMsg.cpp @@ -216,14 +216,18 @@ void KeyMsg::clearAllSceneListeners(Scene * scene) // 创建迭代器 std::vector::iterator iter; // 循环遍历所有监听器 - for (iter = s_vListeners.begin(); iter != s_vListeners.end(); iter++) + for (iter = s_vListeners.begin(); iter != s_vListeners.end();) { // 查找相同名称的监听器 if ((*iter)->m_pParentScene == scene) { // 删除该定时器 delete (*iter); - s_vListeners.erase(iter); + iter = s_vListeners.erase(iter); + } + else + { + iter++; } } } diff --git a/Easy2D/Msg/MouseMsg.cpp b/Easy2D/Msg/MouseMsg.cpp index 58caf147..5594b7be 100644 --- a/Easy2D/Msg/MouseMsg.cpp +++ b/Easy2D/Msg/MouseMsg.cpp @@ -166,14 +166,18 @@ void MouseMsg::clearAllSceneListeners(Scene * scene) // 创建迭代器 std::vector::iterator iter; // 循环遍历所有监听器 - for (iter = s_vListeners.begin(); iter != s_vListeners.end(); iter++) + for (iter = s_vListeners.begin(); iter != s_vListeners.end();) { // 查找相同名称的监听器 if ((*iter)->m_pParentScene == scene) { // 删除该定时器 delete (*iter); - s_vListeners.erase(iter); + iter = s_vListeners.erase(iter); + } + else + { + iter++; } } }