修复了ActionManager在动作执行时添加动作崩溃的bug
This commit is contained in:
parent
8e2b5e1f33
commit
e8659b96f4
|
|
@ -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++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue