touchesBegan,如何获得所有接触,而不仅仅是第一次或最后一次?

Con*_*sed 5 touch touchesbegan ios sprite-kit swift

在SpriteKit的SKSpriteNodes和其他可见节点中,响应这些节点中的触摸通常以某种方式完成,如下所示:

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
Run Code Online (Sandbox Code Playgroud)

这一切都很棒,但如果我想确保获得其中任何和所有触摸的触摸信息(让我们想象一下......)SKSpriteNode怎么办?

= touches.first将条件限制为仅响应此SKSpriteNode内的第一次触摸.如何在这个SKSpriteNode中完成所有触摸,这样每个触摸都可以使用它的位置,或者其他任何东西都可以携带和携带.

我知道.愚蠢的问题.我就是那个人.我根本看不出这是怎么做到的.

com*_*eck 10

通常,除非将multipleTouchEnabled属性设置为,否则视图不会响应多次触摸true.

mySprite.multipleTouchEnabled = true
Run Code Online (Sandbox Code Playgroud)

您会注意到该方法touchesBegan:event:不返回单个UITouch对象,而是返回UITouch对象的Set(也称为无序集合).

在这个方法中,你可以(例如)迭代集合,以便在每次触摸时检查条件,而不是仅仅从集合中获得第一次触摸.

for touch in touches {
  // do something with the touch object
  print(touch.location(mySKNodeObject))
}
Run Code Online (Sandbox Code Playgroud)