2017-08-13 19 views
2

私はどのノード名がタッチされたかを決定するswitch文を持っています。私は重複する2つのノードを持っています。一番上のものがタッチされた場合は、一番上のノードのケースのコードだけを実行します。だから私はその事件の後に休憩を取る。それでも、両方の場合のコードが実行されます。トップケースだけを引き起こす最良の方法は何ですか?以下のコードです:Swift&SpriteKit - break文を使用したswitch文

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

出力:コメントで述べた
トップ

+1

私は上記のコードに問題はないと思います。 breakステートメントが機能するはずです。ほとんどの場合、nodeTouchedには両方のノードがあります。はいの場合は、forループからも解除する必要があります。 – adev

+0

速やかに、あなたは壊れている必要はありません – Knight0fDragon

+0

私はnodeTouchedが両方のノードに触れているとあなたはそれを知っていないことを賭けて、 'print(" \(nodeTouched.count) ")') ' – Knight0fDragon

答えて

1

として、あなたの問題は、forループから破壊されていないということです。 for-loopを入力する際に​​、両方のノードが存在します。これにより、両方のノードで反復処理が行われ、問題の両方で表示されます。この場合、for-loopはbreakにする必要があります。