2017-08-13 4 views
2

Ich habe eine switch-Anweisung, die bestimmt, welcher Knotenname berührt wurde. Ich habe zwei Knoten, die sich überlappen. Wenn die oberste berührt wird, möchte ich nur den Code für den obersten Knoten ausführen. Also habe ich nach diesem Fall eine Pause gemacht. Trotzdem wird der Code für beide Fälle ausgeführt. Was ist der beste Weg, nur den Top Case auszulösen? Unten ist der Code:Swift & SpriteKit - Switch-Anweisung mit Pause

for node in nodeTouched { 
    if let currentNode = node.name { 
     switch currentNode { 
     case "thisIsTheTopNode": 
      print("top") 
      break 
     case "thisIsTheNodeUnderneath": 
      print("bottom") 
      break 
     default: 
      break 
     } 
    } 
}  

Ausgang:
oben
Boden

+1

Ich glaube nicht, dass es ein Problem mit dem obigen Code gibt. Ihre break-Anweisung sollte funktionieren. Meistens hat Ihr nodeTouched beide Knoten. Wenn ja, dann müssen Sie auch von der for-Schleife brechen. – adev

+0

in swift, brauchen Sie nicht zu brechen – Knight0fDragon

+0

Ich wette, dass nodeTouched berührt beide Knoten, und Sie wissen es nicht, platzieren Sie einen Druck direkt nach Ihrer für die besagt 'print (" \ (nodeTouched.count) ")' – Knight0fDragon

Antwort

1

Wie in den Kommentaren erwähnt, ist Ihr Problem ist, dass Sie nicht aus for-Schleife brechen. Sie haben beide Knoten beim Eingeben der for-Schleife. Dies führt dazu, dass es über beide Knoten iteriert und beide wie in Frage gezeigt gedruckt werden. Sie sollten in diesem Fall die For-Schleife break.

Verwandte Themen