SKAction 的问题

Issues with SKAction

top 函数有效。我有一块 5 x 5 的板,虽然一个数组包含 100 个,但我需要不断生成块以放置在板上。最小支票将板上的最小数字存储为最小数字,仅使该块可点击。我想随着时间的推移生成块,第二个功能是我尝试的方式,但只是使应用程序崩溃。

func generateAndCheckBlocks() {

    while smallestArr.contains(100){
        if placeBlocks() == true {
            checkSmallest()
        }
    }
}

func generateAndCheckBlocks() {

    let wait = SKAction.waitForDuration(1)
    let run = SKAction.runBlock {
        if self.placeBlocks() == true {
            self.checkSmallest()
        }
    }

    while smallestArr.contains(100){
        runAction(SKAction.sequence([run, wait]))
    }
}

你采用的方法多么奇怪,你可能会遇到比你想象的更大的问题,但我认为这是一次学习经历,所以...

当您的游戏需要开始创建块时,不用 while 循环,只需执行以下操作:

//Only call this once, not in a loop
func generateBlocks() {

    let wait = SKAction.waitForDuration(1)
    let run = SKAction.runBlock {
        if self.placeBlocks() == true {
            self.checkSmallest()
        }
    }
    self.runAction(SKAction.repeatActionForever(SKAction.sequence([run, wait])), withKey:"blocks");


}

然后,您可以在更新循环中执行此操作:

if(!smallestArr.contains(100))
{
    self.removeActionForKey("blocks")
}