我最近从apple下载了示例应用程序GLPaint。这个应用程序向我展示了如何实现绘图,但现在我想在绘制的线条上设置图像动画。与“飞行控制”应用程序的工作方式类似,我希望能够为图像绘制路径,然后让图像在此路径上显示动画。
任何想法?
答案 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),因此可能需要在动画结束后添加额外的代码来重置图像位置。
另外,发现一旦开始动画就无法改变动画,必须等到它结束才能改变动画。
希望这有帮助!