以下响应者(在NSResponder中定义)不会在OSX中的SKScene中调用:
-(void) mouseMoved:(NSEvent *)theEvent {
DLog(@"TEST");
}
我已经说过要在app委托中接受鼠标移动事件的窗口。
_window.acceptsMouseMovedEvents = YES;
提前谢谢。
SOLUTION:
添加到应用代理:
_window.acceptsMouseMovedEvents = YES;
[_window makeFirstResponder:self.skView.scene];
答案 0 :(得分:5)
添加到应用代理:
_window.acceptsMouseMovedEvents = YES;
[_window makeFirstResponder:self.skView.scene];
答案 1 :(得分:2)
在swift中
window.acceptsMouseMovedEvents = true;
window.makeFirstResponder(self.skView.scene)
答案 2 :(得分:1)
您可以进入窗口对象并从场景中进行设置。
Swift中的:
override func willMove(from view: SKView)
{
self.view!.window?.acceptsMouseMovedEvents = true
}
答案 3 :(得分:0)
以上答案或者对您的SKScene
之外的内容做出了太多假设,或者通过弄乱了响应者链来增加了不必要的骇客性。
SKView
是UIView
的子类。因此,它继承了viewDidMoveToWindow:
方法。您可以使用简单的扩展名为所有SKView
激活鼠标移动的事件。
extension SKView {
open override func viewDidMoveToWindow() {
super.viewDidMoveToWindow()
window?.acceptsMouseMovedEvents = true
}
}