确定手势识别器中触摸的节点
Determine Node Touched in Gesture Recognizer
我有一个 SpriteKit 场景,其中可以有数千个不同的节点。我还在场景中实现了一个单击手势识别器,希望一旦手势识别器被触发,我就可以确定场景中哪个节点被触摸了。目前,我的(非工作)代码如下所示:
@objc func singleTap(_ sender: UIPinchGestureRecognizer) {
print("single tap gesture recognized")
if sender.numberOfTouches == 1 {
let touchPoint = sender.location(in: self.view)
let touchedNode = self.atPoint(touchPoint)
if let name = touchedNode.name
{
if name == "newMapButton"
{
print("newMapButton Touched")
} else {
print("what did you touch?")
}
}
}
}
手势识别器正在工作。当我触摸新地图按钮时,我在控制台中得到 "single tap gesture recognized",但仅此而已。我在这里做错了什么?
在 GameScene 文件中,我像这样在 didMove 方法中创建了我的按钮
let btnTest = SKSpriteNode(imageNamed: "button")
btnTest.setScale(0.2)
btnTest.name = "Button"
btnTest.zPosition = 10
btnTest.position = CGPoint(x: 100, y: 200)
self.addChild(btnTest)
在 didMove 中添加手势:
let tapRec = UITapGestureRecognizer()
tapRec.addTarget(self, action:#selector(GameScene.tappedView(_:) ))
tapRec.numberOfTouchesRequired = 1
tapRec.numberOfTapsRequired = 1
self.view!.addGestureRecognizer(tapRec)
终于实现了 tappedView 方法
@objc func tappedView(_ sender:UITapGestureRecognizer) {
if sender.state == .ended {
var post = sender.location(in: sender.view)
post = self.convertPoint(fromView: post)
let touchNode = self.atPoint(post)
if let name = touchNode.name
{
if name == "Button"
{
print("newMapButton Touched")
} else {
print("what did you touch?")
}
}
}
}
我有一个 SpriteKit 场景,其中可以有数千个不同的节点。我还在场景中实现了一个单击手势识别器,希望一旦手势识别器被触发,我就可以确定场景中哪个节点被触摸了。目前,我的(非工作)代码如下所示:
@objc func singleTap(_ sender: UIPinchGestureRecognizer) {
print("single tap gesture recognized")
if sender.numberOfTouches == 1 {
let touchPoint = sender.location(in: self.view)
let touchedNode = self.atPoint(touchPoint)
if let name = touchedNode.name
{
if name == "newMapButton"
{
print("newMapButton Touched")
} else {
print("what did you touch?")
}
}
}
}
手势识别器正在工作。当我触摸新地图按钮时,我在控制台中得到 "single tap gesture recognized",但仅此而已。我在这里做错了什么?
在 GameScene 文件中,我像这样在 didMove 方法中创建了我的按钮
let btnTest = SKSpriteNode(imageNamed: "button") btnTest.setScale(0.2) btnTest.name = "Button" btnTest.zPosition = 10 btnTest.position = CGPoint(x: 100, y: 200) self.addChild(btnTest)
在 didMove 中添加手势:
let tapRec = UITapGestureRecognizer() tapRec.addTarget(self, action:#selector(GameScene.tappedView(_:) )) tapRec.numberOfTouchesRequired = 1 tapRec.numberOfTapsRequired = 1 self.view!.addGestureRecognizer(tapRec)
终于实现了 tappedView 方法
@objc func tappedView(_ sender:UITapGestureRecognizer) { if sender.state == .ended { var post = sender.location(in: sender.view) post = self.convertPoint(fromView: post) let touchNode = self.atPoint(post) if let name = touchNode.name { if name == "Button" { print("newMapButton Touched") } else { print("what did you touch?") } } } }