请教一个CCDelayTime的问题,回调时间老是不正确

请教一个CCDelayTime的问题,回调时间老是不正确

float time = 0.1;
CCActionInterval* action =
CCSequence::create(CCDelayTime::create(time),
CCCallFunc::create(this, callfunc_selector(RRGameDropLayer::testActionCallback)),
CCDelayTime::create(time),
CCCallFunc::create(this, callfunc_selector(RRGameDropLayer::testActionCallback)),
CCDelayTime::create(time),
CCCallFunc::create(this, callfunc_selector(RRGameDropLayer::testActionCallback)),
NULL
);
this->runAction(action);

testActionCallback是用来打印时间的,但是查看打印的时间来看,每个之间的真正间隔并不是0.1秒,有的是0.2,有的是0.4,甚至还有0的,请问各位大神有没有遇到过这种情况?该怎么解决,先谢谢了。

是在模拟器中运行的吗? 如果是的话很正常

CCDelayTime 只保证至少延迟0.1秒。在你桢率不稳定的情况下超过0.1是很有可能的。。

那请教一下这种情况该怎么做比较合适,我测试了一下schedule时间卡的比较正确,但是我那个函数需要参数传递,schedule就不行了,还请教下大神该怎么做,谢谢了。

模拟器和真机都有这个情况。

正常情况下不会超过很多的。。你用其他办法再桢率不稳定的情况下一样回超过你要延迟的时间。个人觉得。。你首先要确认,你打印时间的函数否是正确。第二,你帧率有没有问题。ccaction带类的时间有误差的问题,只有在多个action顺序执行的时候才回有明显的感觉。这个时候如果对误差敏感的,就要自己自定义action来纠正额外的误差。如果是单个。有超过如此多的误差,是非常不正常的。。应该详细翻查上下文。

好的,谢谢。