-mouseMoved OSX does not get called in a sprite kit SKScene

核能气质少年 提交于 2019-12-07 09:44:23

问题


The following responder (defined in NSResponder) does not get called in an SKScene in OSX:

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

I have said the window to accept mouse moved events in the app delegate.

_window.acceptsMouseMovedEvents = YES;

Thank you in advance.

SOLUTION:

Add to the app delegate:

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

回答1:


Add to the app delegate:

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



回答2:


In swift

window.acceptsMouseMovedEvents = true;
window.makeFirstResponder(self.skView.scene)



回答3:


You can get at the window object and set it from the scene.

in Swift: override func willMove(from view: SKView) { self.view!.window?.acceptsMouseMovedEvents = true }




回答4:


The above answers either make too many assumptions about what’s outside of your SKScene, or add a touch of unnecessary hackiness by messing with the responder chain.

SKView is a subclass of UIView. It inherits, therefore, the viewDidMoveToWindow: method. You can activate mouse-moved events for all your SKViews with a simple extension.

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


来源:https://stackoverflow.com/questions/19704444/mousemoved-osx-does-not-get-called-in-a-sprite-kit-skscene

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!