Swift & SpriteKit - 使用 break 的 switch 语句

Posted

技术标签:

【中文标题】Swift & SpriteKit - 使用 break 的 switch 语句【英文标题】:Swift & SpriteKit - switch statement using break 【发布时间】:2018-01-21 16:40:22 【问题描述】:

我有一个 switch 语句,它决定了哪个节点名称被触及。我有两个重叠的节点。如果触及顶部,我只想执行顶部节点案例的代码。所以我在那个案子之后休息了。即便如此,这两种情况的代码都会被执行。仅触发***案例的最佳方法是什么?下面是代码:

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

输出: 顶部 底部

【问题讨论】:

我认为上面的代码没有任何问题。您的 break 语句应该有效。大多数情况下,您的 nodeTouched 都有两个节点。如果是,那么你也需要打破 for 循环。 在swift中,你不需要break 我敢打赌,nodeTouched 正在接触两个节点,而你不知道,在你的 for 后面打印一个 print("\(nodeTouched.count)") @adev - 你是对的。我也需要跳出 for 循环。呃。谢谢! 【参考方案1】:

正如 cmets 中所述,您的问题是您没有脱离 for 循环。进入 for 循环时,两个节点都存在。这将导致它在两个节点上进行迭代,并将打印两个节点,如问题所示。在这种情况下,您应该break for 循环。

【讨论】:

以上是关于Swift & SpriteKit - 使用 break 的 switch 语句的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit Swift 2.0 游戏:跨多个场景的按钮和节点

Swift & SpriteKit - 使用 break 的 switch 语句

SpriteKit Swift 使整个场景变暗,然后将其改回

iOS Swift SpriteKit:如何使子精灵节点的位置和动作与其父精灵节点相同?

是否可以仅针对 iphone 5 和 6 发布使用 spritekit 和 swift 开发的游戏

如何在 Swift 和 SpriteKit 中添加涟漪效果