Lim*_*ean 4 sprite-kit watchkit watchos-3
在watchOS 3中使用SpriteKit时,如何处理触摸事件?我正在从iOS移植SpriteKit游戏,并且下面的代码无法正常工作。还是必须以某种方式控制WKInterfaceController?
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {}
override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {}
Run Code Online (Sandbox Code Playgroud)
在对同一问题感到沮丧之后,我开始使用手势识别器,并从那里开始计算位置。
@IBAction func handleSingleTap(tapGesture: WKTapGestureRecognizer) {
let location = tapGesture.locationInObject()
if yourSpriteNodeRect.contains(location) {
//do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
但有一个提示:我在创建用于处理手势识别器的方法时发现了一个奇怪的错误,那就是默认情况下不会将手势传递到方法中。我必须按住Ctrl键并拖动以创建方法,然后修改签名以包含手势。如果我创建的方法带有签名中的手势,则Xcode不允许我将手势识别器附加到该方法。
似乎会有更好的方法来检测触摸,但这就是我目前发现的解决方法。
| 归档时间: |
|
| 查看次数: |
1528 次 |
| 最近记录: |