MacOs中的逐帧动画
问题描述:
我正在寻找一种在MacOs应用程序(而不是关键帧属性动画)中逐帧编程绘制动画的方法。我已经尝试使用drawLayer:inContext:
委托方法绘制到CALayer
s,请求setNeedsDisplay
绘制每个帧,但是我这样做的性能很差。在Cocoa中有推荐的方法来做这种类型的动画吗?MacOs中的逐帧动画
答
完成自定义动画的好方法是使用CADisplayLink
(iOS)或CVDisplayLink
(macOS)。 CVDisplayLink
基本上是一个定时器,随着显示刷新频率一直在触发。
然后,您可以根据您得到的值CVDisplayLink
计算您自己的计时功能。 API仍然是C,所以使用起来有点麻烦,尤其是在Swift中,但是一旦你了解它的功能,它就像魅力一样。
我只有与CVDisplayLink
,特别是有层次的良好经验。它们非常高效。我能够在60fps下驱动1000+图层CVDisplayLink
,没有任何问题。
如果您在使用API时需要任何帮助,请随时询问!
备选:
如果你想使用更现代化的API,我可以推荐SpriteKit。还有一些不错的动画API。他们表现非常好。 Apple使用它自己绘制更复杂的视图(如Xcode中的Memory Debugger)。
你的表现越来越差,因为你不能那样做 –