gpt4 book ai didi

cocoa - 在 Cocoa 中每帧绘制一次

转载 作者:行者123 更新时间:2023-12-03 17:00:44 25 4
gpt4 key购买 nike

当我使用 GLUT 时,我可以提供一个回调函数,该函数每帧调用一次以生成帧内容或为帧内容设置动画。

我如何使用 Cocoa 做同样的事情?

我知道有 setNeedsDisplay,但我不知道如何避免每帧多次调用它。我需要的是一个事件或其他回调来告诉我何时绘制另一个框架。

最佳答案

Cocoa 中的所有内容都是缓冲的,因此您可以移动、设置动画和调整 View ,而无需重新绘制它们。如果您需要一遍又一遍地重绘 View (例如,重复调用drawRect:并创建自己的动画),您需要创建一个每1/20秒触发一次并触发 View 刷新的计时器。

您可以像这样创建一个计时器:

[NSTimer scheduledTimerWithTimeInterval:1.0/20.0 target:self selector:@selector(animate) userInfo:nil repeats:YES];

您的回调函数(在本例中为“animate”)将如下所示。如果你的动画需要业务逻辑,你应该把它放在这里。不过,所有绘制都需要在 View 的 drawRect 函数内完成。

- (void)animate {
[animatedView setNeedsDisplay: YES];
}

每帧多次调用 setNeedsDisplay 是安全的。 SetNeedsDisplay 在 View 上设置一个标志,但实际上并不执行任何绘图。当您的代码执行并且应用程序返回到主运行循环时,所有带有 setNeedsDisplay=YES 的 View 都将被重绘。

希望有帮助!

关于cocoa - 在 Cocoa 中每帧绘制一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1053377/

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