gpt4 book ai didi

objective-c - 核心动画对图像数组进行动画处理

转载 作者:行者123 更新时间:2023-12-03 16:38:39 25 4
gpt4 key购买 nike

我基本上想做的是以快速(60/秒)显示图像序列以创建序列。我将创建一个计时器,看看它是否足够快。

我想使用动画在我的 cocoa 应用程序中显示一组图像(每秒最多 60 个)。

这是我迄今为止创建的动画:

- (CAAnimation*)imageAnimation;
{
CGImageRef image1 = [self nsImageToCGImageRef:[NSImage imageNamed:@"1.png"]];
CGImageRef image2 = [self nsImageToCGImageRef:[NSImage imageNamed:@"2.png"]];
CGImageRef image3 = [self nsImageToCGImageRef:[NSImage imageNamed:@"3.png"]];

CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];

NSArray *images = [NSArray arrayWithObjects:(id)image1, (id)image2, (id)image3, nil];

[animation setValues:images];
[animation setDuration:3.0];

return animation;
}

其中 nsImageToCGImageRef 是我在其他地方定义的方法。现在,我不知道从这里到哪里去将此动画添加到我的 View 中。

最佳答案

您应该调查CVDisplayLink ,它允许您在每次 Mac 的显示子系统即将显示帧时接收回调。这将使您能够以 60fps 的速度显示图像,并且不会丢帧,因为 API 仅在需要更新时调用您的代码。

这意味着您无需担心计时器与显示屏的同步问题,也意味着您不会做不必要的工作。如果您的绘图代码很慢,您还可以执行一些操作,例如仅更新备用回调以将帧速率降低到 30fps。

关于objective-c - 核心动画对图像数组进行动画处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7031285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com