我知道这个问题之前已经被问过了,但我认为答案可能需要更新,因为它目前不适用于使用Xcode 8.3.3 for Mac OS的SpriteKit。看完这个post后,我意识到可以在AppDelegate中完成的事情现在应该在ViewController中完成,但它不起作用。任何人有任何建议,为什么这不起作用?下面是我的各种类的样子:SpriteKit MouseMoved不能正常工作
ViewController.m
#import "ViewController.h"
#import "GameScene.h"
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Load the SKScene from 'GameScene.sks'
GameScene *scene = (GameScene *)[SKScene nodeWithFileNamed:@"GameScene"];
// Set the scale mode to scale to fit the window
scene.scaleMode = SKSceneScaleModeAspectFill;
// Present the scene
[self.skView presentScene:scene];
self.skView.showsFPS = YES;
self.skView.showsNodeCount = YES;
//added in hopes that mouse moved events would be captured
[self.skView.window setAcceptsMouseMovedEvents:YES];
[self.skView.window setInitialFirstResponder:self.skView];
}
@end
GameScene.m
#import "GameScene.h"
@implementation GameScene
- (void)didMoveToView:(SKView *)view {
}
-(void) mouseMoved:(NSEvent *)event {
NSLog(@"blah");
}
-(void)update:(CFTimeInterval)currentTime {
// Called before each frame is rendered
}
@end
你没问究竟同样的问题在几个星期前? –
是的。我完全忘记了这一点。无论哪种方式,没有人发布过答案。我将删除旧的问题。 – 02fentym
如果你有兴趣,我可以告诉你如何在Swift中做到这一点。我记得你的旧主题,因为我在Swift中发布了代码,然后在意识到你在Objective-C中需要它之后将其删除。不管你是用Objective-C还是Swift编写它,这个概念都是一样的。 –