2011-08-19 24 views
1

我正在做一个涉及Core Animation和AV Foundation的项目。我想使用Core Animation来渲染一些效果,然后通过AV Foundation将其导出到视频文件。我想要实现的动画效果是重放最终用户在iPad上签名他/她的签名。核心动画drawLayer:由NSTimer驱动的inContext,我做对了吗?

我迄今取得什么: - 从苹果指GLPainter样品,我能够记录用户签名的笔画,每一个人比杆由多个触摸点(CGPoint)的其已记录在我的自定义UIView的touchBegin/touchMoved/touchEnd方法中。由可重复的NSTimer驱动,我可以在我的自定义UIView上重新绘制它。主要是从一点到另一点绘制线的重复过程。

我想要做的事: 实现签名与核心动画技术,重画,再后来,嵌入式核心动画代码带有AV基金会组成的代码,以使最终输出。

我现在所忧虑:

  • 知道一无所知的Core Animation,我一直在学习它的最后几天。然而,我读过的教程/书籍仅告诉我如何通过更改CALayer的属性或制作CAKeyframeAnimation来制作隐式动画。但是我的动画是逐渐在画布的画布上绘制某些东西,而不是移动某物。那么,如何在Core Animation中做到这一点?

我现在正在做的:颇为相似,我与Quartz2D做到了,我用的NSTimer反复设置我的CALayer对象needsDisplay,这反过来又调用其委托的实现drawLayer的:inContext的方法,在那里我写了和我在UIView的drawRect中写的相同的代码。

那么,我没有任何涉及CAAnimation的动画。我只是觉得奇怪,感觉我做错了。我还没有开始将AV动画与AV基础部分结合起来,但我怀疑我的这种做法是否会通过。

我做了诚实搜索,所以我发誓,但没有发现任何相关信息。我在Quartz2D和Core Animation中的经验非常有限,我不得不说,所以,如果有人能给我一些提示,非常感谢,谢谢!

回答

4

你想要做什么是你的图纸同步到屏幕的刷新率。 A NSTimer并不是特别擅长这一点。您正在寻找的课程是CADisplayLink。访问它是这样的:

link = [[UIScreen mainScreen] 
      displayLinkWithTarget:self 
          selector:@selector(shouldUpdateDisplayLink:)]; 

设置需要在shouldUpdateDisplayLink:回调显示器。保留显示链接以确保它保持在周围,并可选择设置较低的刷新率,以便与媒体播放相匹配。

+0

谢谢,PeyloW。我终于通过这种方法实现了目标http://stackoverflow.com/questions/6311184/creating-a-movie-file-of-a-animation-with-avassetwriter –