我正在尝试使用Swift中的sprite kit场景创建一个屏幕保护程序。当我第一次创建项目时,在添加任何SpriteKit代码之前,我遇到了屏幕保护程序构建的问题,但只显示“你不能在这个版本的OS X中使用屏幕保护程序X”。
这已经解决了,或者我想通过添加到构建设置来解决:
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
这似乎可以解决问题。我认为这个问题在我身后,但是现在我已经添加了一个非常简单的SpriteKit场景(只显示BG颜色),消息又回来了。任何人都可以确认屏幕保护程序可以使用SpriteKit,如果有,任何关于如何使其工作的想法?
答案 0 :(得分:0)
[编辑]
事实证明,在100%swift代码中使用ScreenSaverView
时,它不喜欢ScreenSaverView swift文件之外的任何快速对象。如果您将代码保留在文件中,那么您将不会收到此错误。
- 旧东西 -
你应该能够将SKView作为一个孩子添加到ScreenSaverView,然后你的精灵工具包在这个SKView中工作,除此之外,只要你在支持Sprite的OSX版本上,一切都应该按预期工作Kit,如果你能告诉我你正在测试的版本,我会把它运行在我的。
也许这是你的问题,你正在运行一些< 10.9。
来源: Sprite Kit OSX not loading start up code for spaceship
Code that works:
#import "screenSaverTestView.h"
#import <SpriteKit/SpriteKit.h>
#import "screenSaverTest-Swift.h"
@implementation screenSaverTestView
- (instancetype)initWithFrame:(NSRect)frame isPreview:(BOOL)isPreview
{
self = [super initWithFrame:frame isPreview:isPreview];
if (self) {
[self setAnimationTimeInterval:1/30.0];
MyView *view = [[MyView alloc] init];
[self addSubview:view];
}
return self;
}
- (void)startAnimation
{
[super startAnimation];
}
- (void)stopAnimation
{
[super stopAnimation];
}
- (void)drawRect:(NSRect)rect
{
[super drawRect:rect];
}
- (void)animateOneFrame
{
return;
}
- (BOOL)hasConfigureSheet
{
return NO;
}
- (NSWindow*)configureSheet
{
return nil;
}
@end
==== SWIFT =====
import Foundation
import SpriteKit
class MyView : SKView
{
override func viewWillMoveToSuperview(newSuperview: NSView?) {
self.presentScene(SKScene(size: self.frame.size));
}
}