-mouseMoved OSX不会在精灵工具包SKScene中调用

时间:2013-10-31 10:49:16

标签: macos mouseevent mousemove sprite-kit

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

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

我已经说过要在app委托中接受鼠标移动事件的窗口。

_window.acceptsMouseMovedEvents = YES;

提前谢谢。

SOLUTION:

添加到应用代理:

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

4 个答案:

答案 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之外的内容做出了太多假设,或者通过弄乱了响应者链来增加了不必要的骇客性。

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

extension SKView {
    open override func viewDidMoveToWindow() {
        super.viewDidMoveToWindow()
        window?.acceptsMouseMovedEvents = true
    }
}