修复了ActionManager在动作执行时添加动作崩溃的bug

This commit is contained in:
Nomango 2017-10-06 01:41:06 +08:00
parent 8e2b5e1f33
commit e8659b96f4
1 changed files with 5 additions and 9 deletions

View File

@ -9,18 +9,14 @@ void ActionManager::__exec()
static LARGE_INTEGER nNow; static LARGE_INTEGER nNow;
QueryPerformanceCounter(&nNow); QueryPerformanceCounter(&nNow);
// 循环遍历所有正在运行的动作 // 循环遍历所有正在运行的动作
std::vector<Action*>::iterator iter; for (size_t i = 0; i < s_vActions.size(); i++)
for (iter = s_vActions.begin(); iter != s_vActions.end();)
{ {
if ((*iter)->isRunning() && (*iter)->_exec(nNow)) auto a = s_vActions[i];
if (a->isRunning() && a->_exec(nNow))
{ {
// _exec 返回 true 时说明动作已经结束 // _exec 返回 true 时说明动作已经结束
(*iter)->release(); a->release();
iter = s_vActions.erase(iter); s_vActions.erase(s_vActions.begin() + i);
}
else
{
iter++;
} }
} }
} }