CCActionManager是执行动作的单例类。当某个Node执行RunAction()时,要执行的动作会传递给CCActionManager的单例,此单例会定时执行update函数。
update函数是每帧都调用的。那么,若想让一个动作慢一点执行,该如何设置时间间隔呢?
我们可以在CCActionManager.h中添加一个函数:setUpdateInterval()来设置时间间隔。
void setUpdateInterval(float interval)
{
_updateInterval = interval;
}
需要添加如下两个变量:
float _updateInterval; //更新的时间间隔
float _countTime; //用来计数
在构造函数初始化时也初始化上述两个参数。
ActionManager::ActionManager()
: _targets(nullptr),
_currentTarget(nullptr),
_currentTargetSalvaged(false)
, _updateInterval(0)
, _countTime(0)
{
}
在 CCActionManager.cpp的update函数中,添加如下代码来设置时间间隔。
void ActionManager::update(float dt)
{
//若设置了_updateInterval
if (_updateInterval > 0)
{
_countTime += dt;
//若未达到指定时间间隔,直接return
if (_countTime < _updateInterval)
return;
//达到了时间间隔,将指定的时间间隔赋给dt,继续执行
dt = _updateInterval;
_countTime -= _updateInterval;
}
for (tHashElement *elt = _targets; elt != nullptr; )
//.....省略
//....
}