在SpriteKit的SKSpriteNodes和其他可见的节点,响应触摸这些节点往往以某种方式做这样的:touchesBegan,如何获得所有触及,不只是第一次或最后一次?
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first {...
// do something with the touch location that's now in touch
// etc
这是所有伟大的,但如果我想要做什么确保我得到的触摸信息任何和所有触及这里(让我们想象一下...)SKSpriteNode?
= touches.first限制条件只响应此SKSpriteNode内的第一个触摸。它是如何处理这个SKSpriteNode中的所有触摸的,这样每个触摸点都有其可用的位置,或者其它任何其他位置都可用,并且可以随身携带。
我知道。愚蠢的问题。我是那个人。我根本看不出这是如何完成的。
我们谈到的阅读文档和理解每一行代码的做法很多很好的答案 - 这是派上用场了。 'touches.first'返回第一次触摸,所以你应该问'触摸是什么?'。那么当您查看方法签名时,您会看到'接触'是'Set'。当你点击'触摸'时,你也会在Xcode中看到这个工具提示。现在你的问题是'如何访问Set的每一个成员',所以你可以前往Swift文档和集合参考中的'Set'信息。练习问这些问题:-) –
缺失:“做到这一点的最佳方式?”,“最高效的?”,“最灵活的方式是什么?”和其他我不敢问的主观问题,但要回答。我知道这是一个'Set',来自'Set',我知道如何通过'for循环访问Set的内容......'但当然,这不可能是最好的/正确的/灵活的方式来做一些与处理触摸一样重要的事情......对吗? ! @SteveIves。然后需要'multipleTouchEnabled',我只能通过试验和错误来了解它。然后还有其他人提出了同样的问题,其他人也是如此。 –
Confused
但最重要的是,我的烦恼是,对于使用SpriteKit(如果Apple关心它并且有很多用户)所固有的所有方式的文档,都会保留... – Confused