将timingFunction添加到SCNAction会中断动作完成处理程序

时间:2015-11-20 12:19:16

标签: ios animation scenekit scnnode

我有一个奇怪的情况。我正在尝试运行动画,我正在等待完成处理程序。一切正常,直到我定义timingFunction。在那之后有时候完成哈德勒根本就没有被召唤。我的动画停留在最后一帧。

$ git branch -a

你知道如何解决这个问题吗?

P.S。 我已经实施了:

CGFloat rotations = times * 2.0;
CGFloat zoomLevel = COIN_MOVE_UP;
SCNAction* rotate = [SCNAction rotateByX:M_PI_2 y:0 z:0 duration:2.0 / (rotations + 1)];
NSUInteger swaps = rotations / 2;
SCNAction* rotateSequence = [SCNAction repeatAction:rotate count:2];
SCNAction* coinRotate = [SCNAction repeatAction:rotateSequence count:swaps];
SCNAction* coinRotateAction = [SCNAction sequence:@[coinRotate, rotate]];

SCNAction* coinMoveUpAction = [SCNAction moveByX:0 y:-zoomLevel z:0 duration:1];
SCNAction* coinMoveDownAction = [SCNAction moveByX:0 y:zoomLevel z:0 duration:1];

SCNAction* coinMoveAction = [SCNAction sequence:@[coinMoveUpAction, coinMoveDownAction]];
SCNAction* coinRotateY = [SCNAction rotateByX:0 y:M_PI z:0 duration:2];
SCNAction* fullGroup = [SCNAction group:@[coinRotateAction, coinMoveAction, coinRotateY]];
[fullGroup setTimingFunction:^(float time){
    return time;
}];

[self.coinNode runAction:fullGroup completionHandler:^{
    // completion is not called sometimes when timingFunction is efined
}];

并且没有计时功能此方法在动画完成时停止被调用但是当存在timig函数时,有时动画一直运行直到结束但是没有调用完成处理程序并且仍在调用didApplyAnimationsAtTime:。因此,即使在达到最终状态之后,这个动画也可能以某种方式运行。

0 个答案:

没有答案