gpt4 book ai didi

iphone - 一次运行多个 CADisplayLinks ?

转载 作者:行者123 更新时间:2023-11-28 22:39:15 26 4
gpt4 key购买 nike

我将 CADisplayLink 用作选通计时器。

我有 2 个 CADisplayLinks:

主要的(在整个过程中运行):

SMPTELink = [CADisplayLink displayLinkWithTarget:self selector:@selector(onTick)];
SMPTELink.frameInterval = 1;
[SMPTELink addToRunLoop:[NSRunLoop mainRunLoop]
forMode:NSDefaultRunLoopMode];

频闪一(仅在频闪发生时运行):

strobeLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(toggleStrobe)];
strobeLink.frameInterval = 1;
[strobeLink addToRunLoop:[NSRunLoop mainRunLoop]
forMode:NSDefaultRunLoopMode];
[strobeLink setPaused:YES]; // I setPaused:NO when using the strobe.

同时运行两个 CADisplayLink 不好吗?有时我的闪光灯看起来并不像我想象的那么光滑。这是我的 toggleStrobe 方法:

-(void)toggleStrobe {

if (!self.firstTimestampStrobe)
self.firstTimestampStrobe = strobeLink.timestamp;

NSTimeInterval elapsed = (strobeLink.timestamp - self.firstTimestampStrobe);

NSInteger frameNumber = (NSInteger)(elapsed * ((strobeValue*15)/255)) % 2;

if (frameNumber != self.lastFrameStrobe)
{
if (frameNumber == 1) {

UIColor *color = [[UIColor alloc] initWithRed: 0 green: 0 blue: 0 alpha: 1.0];
strobeBackground.backgroundColor = color;

} else {

UIColor *color = [[UIColor alloc] initWithRed: 0 green: 0 blue: 0 alpha: 0];
strobeBackground.backgroundColor = color;

}

self.lastFrameStrobe = frameNumber;
}

}

最佳答案

显示链接的要点是能够在每次刷新屏幕时进行绘制。我不明白你为什么需要两个(因为当显示刷新时它仍然会被调用)。不能只使用一个并在每次刷新时确定要显示的颜色吗?

关于iphone - 一次运行多个 CADisplayLinks ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15005593/

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