Jor*_*hez 3 macos objective-c mousewheel sprite-kit
我正在使用新的Sprite-Kit框架编写游戏,并希望使用鼠标滚轮更改玩家的枪.首先,我想在滚轮移动时进行处理.我从Cocoa事件处理指南中尝试了以下方法
- (void)scrollWheel:(NSEvent *)theEvent
{
NSLog(@"SCROOOOOOOLL iN MOVeMENT");
}
Run Code Online (Sandbox Code Playgroud)
结果:什么都没有,我移动鼠标滚轮时没处理.
我知道如何处理这个事件?
更新:我看到两个答案讨论来自NSResponder或NSView的类派生,但我的类派生自SKScene,我使用Sprite-kit框架进行编程,而obj-c不允许多重继承.
这里的类定义:
#import <SpriteKit/SpriteKit.h>
@interface OpcionesMenu : SKScene
@end
Run Code Online (Sandbox Code Playgroud)
即使SKScene源自NSResponder,它也不是AppKit事件的直接接收者.相反,容纳场景的SKView(派生自NSView/ UIView)处理事件.您可以通过在场景的mouseDown方法上设置断点来观察此情况:
-[TWTMyScene mouseDown:]
-[SKView mouseDown:] ()
-[NSWindow sendEvent:] ()
-[NSApplication sendEvent:] ()
-[NSApplication run] ()
NSApplicationMain ()
Run Code Online (Sandbox Code Playgroud)
因此,您可以自己子类化SKView并转发scrollWheel事件.或者,如果您喜欢危险地生活,您可以在任何代码的末尾粘贴此类别,它将为您处理:
@implementation SKView(ScrollTouchForwarding)
- (void)scrollWheel:(NSEvent *)event {
[self.scene scrollWheel:event];
}
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2992 次 |
| 最近记录: |