1. cocos-2d node上面的 schedule
/** * Schedules a lambda function. * * @param callback The lambda function to be schedule. * @param interval Tick interval in seconds. 0 means tick every frame. * @param repeat The selector will be executed (repeat + 1) times, you can use CC_REPEAT_FOREVER for tick infinitely. * @param delay The amount of time that the first tick will wait before execution. * @param key The key of the lambda function. To be used if you want to unschedule it. * @lua NA */ void schedule(const std::function<void(float)>& callback, float interval, unsigned int repeat, float delay, const std::string &key);注:我们想要定时器第一次执行时等待0秒,会把第四个参数delay 设为0,但会发现效果并不是我们想的那样(若第四个参数delay 设为0 该函数的第一次执行是在等待interval之后),第一次执行时等待时间只能趋近与0不能等于0
Node::schedule->Scheduler::schedule->initWithCallback->setupTimerWithInterval
void Timer::setupTimerWithInterval(float seconds, unsigned int repeat, float delay)
{
_elapsed = -1;
_interval = seconds;
_delay = delay;
_useDelay = (_delay > 0.0f) ? true : false;
_repeat = repeat;
_runForever = (_repeat == CC_REPEAT_FOREVER) ? true : false;
}
查看源码发现有判断只有当 我们传入的_delay > 0.0f 才会使用我们传入的值。