在SwiftUI SpriteView中收听MacOS上SKScene中的点击/触摸事件



我正试图在Mac OS中的SwiftUISpriteView内的SpriteKitSKScene内截获鼠标单击事件。当我在视图中单击鼠标时,永远不会调用接受NSEvent对象的覆盖touchesBegun()。CCD_ 8被设置为真。我错过了什么?在Xcode 13.2中运行,针对Mac OS的部署目标为12.1。

import SwiftUI
import SpriteKit
class MyScene : SKScene {
override func touchesBegan(with event: NSEvent) {
print(event)
}
}
var scene : MyScene {
let r = MyScene()
r.isUserInteractionEnabled = true
r.size = .init(width: 500, height: 500)
r.scaleMode = .aspectFill
r.backgroundColor = .orange
return r
}
struct ContentView: View {
var body: some View {
SpriteView.init(scene: scene)
.frame(width: 500, height: 500)
.padding()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

在macOS上,SKScene继承自NSResponder,因此我们覆盖鼠标处理程序,如

class MyScene : SKScene {
override func mouseDown(with event: NSEvent) {  // << here !!
print(event)
}
}

使用Xcode 14/macOS 12.5 进行测试

相关内容

  • 没有找到相关文章

最新更新