【发布时间】:2017-01-11 20:32:32
【问题描述】:
我不得不在具有子节点的 SKSpriteNode 子类中覆盖 touchesBegan 和 touchesEnded(因为我想在子节点上传播触摸事件)
touchesBegan 工作正常,但我遇到的问题是 touchesEnded 检查同一个精灵是否仍在用户手指下。
无论我尝试什么,我都不会在那时的地点节点列表中获得对“自我”的引用
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
print("touched ended")
for t in touches {
let allNodes = nodes(at: t.location(in: self.scene!))
print(allNodes)
}
}
t.location(in: self.scene!) 是否应该返回我正在寻找的内容?我也试过 self.scene?.view 但这也返回一个空节点列表。
如何检查 touchesEnded 触摸是否仍在此 SKSpriteNode 上?或者如果他们移动了手指,检查它是否在一个完全不同的节点上?我想我需要将它转换回整个场景坐标,我认为 t.location(in: self.scene.view)) 会怎么做。我的另一个想法是在主场景文件上使用某种委托方法,但是 touch.location 是否与被点击的节点相关?
【问题讨论】: