2017-08-13 15 views
2

我有一個switch語句,它決定了哪個節點名稱被觸摸。我有兩個重疊的節點。如果最上面的那個被觸摸,我只需要執行頂層節點的代碼。所以我在這個案子之後休息了一下。即便如此,這兩種情況下的代碼都被執行了。什麼纔是最好的方式來觸發頂級案件?下面是代碼:Swift&SpriteKit - 使用中斷的開關語句

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

在swift中,你不需要中斷 – Knight0fDragon

+0

我敢打賭,nodeTouched觸及兩個節點,並且你不知道它,在你的print [「(\\ nodeTouched.count)」)之後放置一個打印文件' – Knight0fDragon

回答

1

正如在評論中提到,你的問題是,你是不是從環斷裂。進入for-loop時,你有兩個節點。這將導致它遍歷兩個節點,它將按照問題所示進行打印。在這種情況下,您應該使用break for-loop。