沿绘制路径动画对象?

时间:2010-07-14 17:47:02

标签: iphone objective-c animation

我最近从apple下载了示例应用程序GLPaint。这个应用程序向我展示了如何实现绘图,但现在我想在绘制的线条上设置图像动画。与“飞行控制”应用程序的工作方式类似,我希望能够为图像绘制路径,然后让图像在此路径上显示动画。

任何想法?

3 个答案:

答案 0 :(得分:5)

你可以创建你的路径

CGMutablePathRef thePath = CGPathCreateMutable();

然后在touchesBegan和touchesMoved中添加到你的路径

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
  UITouch *touch = [touches anyObject];
  if(touch){
    CGPoint tapPoint = [touch locationInView: self.view];
    CGPathMoveToPoint(thePath, NULL,tapPoint.x,tapPoint.y);    
  }
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
  UITouch *touch = [touches anyObject];
  if(touch){
    CGPoint tapPoint = [touch locationInView: self.view];
    CGPathAddLineToPoint(thePath, NULL,tapPoint.x,tapPoint.y);
  }
}

并且在touchEnded上,正如约书亚所说,创建一个CAKeyframeAnimation并设置其路径到路径并设置动画的其他属性(持续时间等)并将其应用于您的对象

答案 1 :(得分:1)

查看CAKeyframeAnimation,这允许您为动画设置路径(这是一个CGPathRef)。

答案 2 :(得分:0)

根据AtomRiot的代码,我在博客上创建了一个简单的项目。见this post,还发布了一个显示结果的简短视频。

但是当动画结束时,图像会以某种方式重新定位回(0,0),因此可能需要在动画结束后添加额外的代码来重置图像位置。

另外,发现一旦开始动画就无法改变动画,必须等到它结束才能改变动画。

希望这有帮助!