制作图像是否遵循iPhone中预先定义的路径?

时间:2010-08-24 17:37:25

标签: iphone uiimageview cgpath

我正在寻找一些方法让图像(球)沿着iPhone中的预定义路径移动。我的目的是创造一个类似于迷宫运动的球运动。我知道有一种方法可以使用CGPath以编程方式创建路径。但我认为很难创建复杂的路径。                      有没有更好更简单的方法来创建图像中的路径(它将看起来或代表路径)并使图像(球)运动受限于此路径?

Thanx提前寻求帮助......

2 个答案:

答案 0 :(得分:4)

创建用于沿路径移动对象的动画并不是那么难。例如,以下代码将根据特定的贝塞尔曲线进行动画处理:

CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
pathAnimation.duration = 1.0f;
pathAnimation.calculationMode = kCAAnimationPaced;

CGPoint currentPosition = viewToAnimate.layer.position;
CGPoint endPoint = CGPointMake(currentPosition.x + 100.0f, currentPosition.y - 50.0f);
CGMutablePathRef curvedPath = CGPathCreateMutable();
CGPathMoveToPoint(curvedPath, NULL, currentPosition.x, currentPosition.y);
CGPathAddCurveToPoint(curvedPath, NULL, endPoint.x, currentPosition.y, endPoint.x, currentPosition.y, endPoint.x, endPoint.y);
pathAnimation.path = curvedPath;
CGPathRelease(curvedPath);

pathAnimation.fillMode = kCAFillModeForwards;
pathAnimation.removedOnCompletion = NO;
[viewToAnimate.layer addAnimation:pathAnimation forKey:@"animateMovementUsingPath"];

该代码的中心部分是定义路径的位置。在这种情况下,我开始在currentPosition绘图,然后添加一条以endPoint结尾的曲线。此曲线的控制点为(endPoint.x, currentPosition.y)(endPoint.x, currentPosition.y)

以这种方式定义矢量曲线要容易得多,让Core Animation为您处理所有补间,而不是自己管理所有动画。

答案 1 :(得分:0)

你考虑过一个真正的物理引擎吗?例如,子弹非常棒。