4

以下响应者(在 NSResponder 中定义)不会在 OSX 的 SKScene 中被调用:

-(void) mouseMoved:(NSEvent *)theEvent {
    DLog(@"TEST");
}

我已经说过在应用程序委托中接受鼠标移动事件的窗口。

_window.acceptsMouseMovedEvents = YES;

先感谢您。

解决方案:

添加到应用委托:

_window.acceptsMouseMovedEvents = YES;
[_window makeFirstResponder:self.skView.scene];
4

4 回答 4

5

添加到应用委托:

_window.acceptsMouseMovedEvents = YES;
[_window makeFirstResponder:self.skView.scene];
于 2013-10-31T11:09:55.290 回答
2

迅速

window.acceptsMouseMovedEvents = true;
window.makeFirstResponder(self.skView.scene)
于 2015-01-27T15:09:57.193 回答
1

上面的答案要么对您SKScene的 .

SKView是 的子类UIView。因此,它继承了该viewDidMoveToWindow:方法。SKView您可以使用简单的扩展程序为所有 s 激活鼠标移动事件。

extension SKView {
    open override func viewDidMoveToWindow() {
        super.viewDidMoveToWindow()
        window?.acceptsMouseMovedEvents = true
    }
}
于 2018-08-11T15:58:59.100 回答
1

您可以获取窗口对象并从场景中设置它。

在斯威夫特: override func willMove(from view: SKView) { self.view!.window?.acceptsMouseMovedEvents = true }

于 2017-06-28T07:56:27.177 回答