public override void update(float t)
{
// if t==1, ignore. Animation should finish with t==1
if (FloatUtils.Small(t, 1.0f))
{
t *= _animation.loops;
// new loop? If so, reset frame counter
uint loopNumber = (uint)t;
if (loopNumber > _executedLoops)
{
_nextFrame = 0;
_executedLoops++;
}
// new t for animations
t = (t % 1.0f);
}
List <CCAnimationFrame> frames = _animation.frames;
uint numberOfFrames = (uint)frames.Count;
CCSpriteFrame frameToDisplay = null;
for (int i = _nextFrame; i < numberOfFrames; i++)
{
float splitTime = _splitTimes[i];
if (FloatUtils.ES(splitTime, t))
{
CCAnimationFrame frame = frames[i];
frameToDisplay = frame.spriteFrame;
((CCSprite)_target).displayedFrame = frameToDisplay;
NSDictionary dict = frame.userInfo;
if (dict != null)
{
// NSNotificationCenter.defaultCenter.postNotification(CCAnimationFrameDisplayedNotification, _target, dict);
_nextFrame = i + 1;
}
}
// Issue 1438. Could be more than one frame per tick, due to low frame rate or frame delta < 1/FPS
else
{
break;
}
}
}