我有一个基于视图的iPhone应用程序。目前屏幕左上角有一个小图像。当用户点击屏幕时,使用CAKeyframeAnimation沿着曲线路径向屏幕右下角动画显示图像。
现在我想更改应用程序,而不是在点击事件上设置动画,用户可以沿着动画路径拖动图像。基本上当用户向右向下拖动时,动画向前移动,当用户向上或向左拖动时,动画向后退。在触摸结束事件中,我希望图像继续沿着拖动方向沿路径设置动画。
我知道如何阅读拖动事件,但我不知道开始/停止/恢复动画或跳到动画中的特定阶段。看起来我需要重新开始并使用CAKeyframeAnimation之外的其他东西。如果是这样,我该如何重新开始?
非常感谢!
答案 0 :(得分:1)
不幸的是,没有办法将CAAnimation设置为中途启动。
您需要在用户拖动时沿路径手动移动图像,然后在用户完成拖动后使用剩余路径创建新的CAAnimation。
答案 1 :(得分:0)
Mark F是正确的。在玩游戏时我遇到了类似的问题。我想从完全重新启动动画暂停它们。
我能想到的最简单的解决方案是捕捉开始时间:
mStartTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
然后,当动画停止时,获取停止时间并计算偏移量:
CFTimeInterval stopTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];;
mTimeOffset += stopTime - mStartTime;
使用mTimeOffset
,我会计算一组不同的关键时间:
- (NSArray *)keyTimesWithOffsetTime:(CFTimeInterval)offsetTime;
基于此,我会得到一个不同的动画起始帧。 “框架”是指关键帧动画的任何部分。
这样做有点痛苦,但确实有效。我很想知道使用cocos2d的游戏如何处理暂停和恢复。必须有一个更简单的方法。
关于沿着路径的动画,似乎你已经没事了。如果没有,请查看本教程: