gpt4 book ai didi

cocoa - ScreenSaverView 与 CAEmitterLayer 在第二个屏幕上不稳定

转载 作者:行者123 更新时间:2023-12-03 16:46:04 32 4
gpt4 key购买 nike

有什么想法为什么仅使用带有 CAEmitterLayer 子层的普通 ScreenSaverView 子类的屏幕保护程序会在主屏幕上渲染良好并且断断续续(就好像每 2. 帧渲染一样)在那里..)在辅助屏幕上..?

这是我的初始化代码:

- (id)initWithFrame:(NSRect)frame isPreview:(BOOL)isPreview
{
self = [super initWithFrame:frame isPreview:isPreview];
if (self)
{
CAEmitterLayer* emitterLayer = [MyEmitterFactory emitterLayer:self];

[self setWantsLayer:YES];
[self.layer addSublayer:emitterLayer];
[self setAnimationTimeInterval:1/2.0];
}
return self;
}

该子类中的所有其他内容都是默认的(由 Xcode 模板提供)。

有趣的是,backingStoreType 听起来确实是使用 CoreAnimation 在 ScreenSaverView 子类中进行调整的良好候选者,可惜除了默认模式之外的所有其他模式都不能用作根据文档..

(由于动画由核心动画提供支持,所以我在 setAnimationTimeInterval 中放入什么并不重要 - 或者完全删除调用,如实验所示)

最佳答案

根据NSView setWantsLayer:的文档

要创建图层托管 View ,您必须调用 setLayer: 并在调用 setWantsLayer: 方法之前提供图层对象;这些方法调用的顺序至关重要。

此外:它是哪个操作系统版本?当两个显示器镜像时(反之亦然),是否也会出现不稳定性?

关于cocoa - ScreenSaverView 与 CAEmitterLayer 在第二个屏幕上不稳定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24849277/

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