是否可以使用 UITapGestureRecognizer 获取多个 SKNode?
Is it possible to get multiple SKNodes with UITapGestureRecognizer?
我目前在同一个 SKScene 上有多个球。我处理 GameScene 中的所有触摸和手势。下面是我用来检测哪个节点被触摸的代码,它有效。
我不确定的是,因为在真实设备上使用它时总会有一些 touchesMoved,是否有可能超过一个节点同时接收点击?如果是这样,我显然需要以不同的方式编写代码。
@objc func tappedView(_ sender:UITapGestureRecognizer) {
if sender.state == .ended{
let point : CGPoint = sender.location(in: self.view)
var post = sender.location(in: sender.view)
post = self.convertPoint(fromView: post)
if let touchNode = self.atPoint(post) as? MyBall{
//the declaration below is just so I have somewhere to stop in the debugger
var x = 1
}
}
}
使用nodes(at:)
获取一个点的多个节点。
@objc func tappedView(_ sender:UITapGestureRecognizer) {
if sender.state == .ended{
let point : CGPoint = sender.location(in: self.view)
var post = sender.location(in: sender.view)
post = self.convertPoint(fromView: post)
for touchNode in self.nodes(at:post){
//the declaration below is just so I have somewhere to stop in the debugger
var x = 1
}
}
}
https://developer.apple.com/documentation/spritekit/sknode/1483072-nodes
我目前在同一个 SKScene 上有多个球。我处理 GameScene 中的所有触摸和手势。下面是我用来检测哪个节点被触摸的代码,它有效。
我不确定的是,因为在真实设备上使用它时总会有一些 touchesMoved,是否有可能超过一个节点同时接收点击?如果是这样,我显然需要以不同的方式编写代码。
@objc func tappedView(_ sender:UITapGestureRecognizer) {
if sender.state == .ended{
let point : CGPoint = sender.location(in: self.view)
var post = sender.location(in: sender.view)
post = self.convertPoint(fromView: post)
if let touchNode = self.atPoint(post) as? MyBall{
//the declaration below is just so I have somewhere to stop in the debugger
var x = 1
}
}
}
使用nodes(at:)
获取一个点的多个节点。
@objc func tappedView(_ sender:UITapGestureRecognizer) {
if sender.state == .ended{
let point : CGPoint = sender.location(in: self.view)
var post = sender.location(in: sender.view)
post = self.convertPoint(fromView: post)
for touchNode in self.nodes(at:post){
//the declaration below is just so I have somewhere to stop in the debugger
var x = 1
}
}
}
https://developer.apple.com/documentation/spritekit/sknode/1483072-nodes