【问题标题】:How to add child (sknode) in a Switch Statement in swift spritekit如何在 swift spritekit 的 Switch 语句中添加子节点(sknode)
【发布时间】:2015-06-08 00:42:00
【问题描述】:

我正在制作一个小游戏,我需要随机排列从右到左的列。 我正在使用 switch 语句。在每种情况下,我都添加了一个不同的子节点,但它不起作用。

All g1, g2.. here..



var y = true
do{
var x = arc4random_uniform(5)
switch x
  {
case 1: addChild(g1); g1.runAction(moveremover)
case 2: addChild(g2); g2.runAction(moveremover)
default: SKAction.waitForDuration(2)
  }
 }
while y

【问题讨论】:

  • do{...}while(true) 是无限循环,直到您以某种方式更改 y 的值。我猜你不想要那个。从您发布的代码看来,您正在尝试生成节点并移动它们?您是否需要定期生成它们?阅读本教程中有关手里剑的部分:raywenderlich.com/80917/sprite-kit-inverse-kinematics-swift 这将是定期生成节点的一种方式。您仍然可以使用 switch 来选择要生成的节点,但我认为 do/while 无限循环对于任何情况都是非常糟糕的选择。
  • 我想生成无限节点并移动它们(这就是我放置无限循环的原因),我需要每 2 秒生成一次......
  • 而不是while循环是一个更好的函数?

标签: swift switch-statement addchild


【解决方案1】:

您可以使用SKAction.repeatForever 来一次又一次地重复一个函数,而不是无穷无尽的do while loop

func spawnColumn () {
    // This has your column spawning code.
}

func spawnColumnEveryTwoSeconds() {

    let spawnAction = SKAction.runBlock { () -> Void in
        self.spawnColumn()
    }

    let waitTwoSeconds = SKAction.waitForDuration(2.0)
    let spawnAndWait = SKAction.sequence([spawnAction,waitTwoSeconds])
    let spawnAndWaitForever = SKAction.repeatActionForever(spawnAndWait)

    self.runAction(spawnAndWaitForever)
}

【讨论】:

    猜你喜欢
    • 2023-03-16
    • 2018-01-21
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多