Swift 在for循环中等待SKAction完成

Swift 在for循环中等待SKAction完成,swift,sprite-kit,skaction,Swift,Sprite Kit,Skaction,我有一个for循环,它运行10次,每次创建一个节点并将其添加到场景中。但是,我希望在添加的每个节点之间都有一个延迟(添加一个节点,等待一秒钟,添加一个节点,等待一秒钟,等等) 但是,在第一个1秒之后,将同时添加所有10个节点。如何在添加的每个节点之间等待一秒钟,从而达到预期的效果 这是我的密码: 编辑: 您可以使用操作来实现这一点 首先,为延迟创建动作并将节点添加到场景中 let waitAction = SKAction.wait(forDuration: 1) let addNodeActi

我有一个for循环,它运行10次,每次创建一个节点并将其添加到场景中。但是,我希望在添加的每个节点之间都有一个延迟(添加一个节点,等待一秒钟,添加一个节点,等待一秒钟,等等)

但是,在第一个1秒之后,将同时添加所有10个节点。如何在添加的每个节点之间等待一秒钟,从而达到预期的效果

这是我的密码:

编辑:


您可以使用操作来实现这一点

首先,为延迟创建动作并将节点添加到场景中

let waitAction = SKAction.wait(forDuration: 1)
let addNodeAction = SKAction.run {
    let node = SKSpriteNode(imageNamed: "example")
    self.addChild(node)
}
let sequenceAction = SKAction.sequence([waitAction, addNodeAction])
接下来,创建一系列动作,以便在将节点添加到场景之前始终发生延迟

let waitAction = SKAction.wait(forDuration: 1)
let addNodeAction = SKAction.run {
    let node = SKSpriteNode(imageNamed: "example")
    self.addChild(node)
}
let sequenceAction = SKAction.sequence([waitAction, addNodeAction])
接下来,创建一个动作,重复该序列10次

let repeatAction = SKAction.repeat(sequenceAction, count: 10)
最后,运行此操作并观察节点的显示

run(repeatAction)

编辑:

要解决注释中关于需要访问当前角色的第二个问题(使添加节点的每个操作略有不同),请在
角色中循环以构建一系列操作,然后运行该操作

var actions = [SKAction]()

let waitAction = SKAction.wait(forDuration: 1)

for character in line.characters {

    let addNodeAction = SKAction.run {
        let node = SKSpriteNode(imageNamed: "example")
        // use the character variable here
        self.addChild(node)
    }

    actions.append(waitAction)
    actions.append(addNodeAction)

}

let sequenceAction = SKAction.sequence(actions)
run(sequenceAction)
这个怎么样?(未测试:)


因此,您可以从0开始枚举字符,其中i是第i个字符。对于每个字符,您只需将其在字符串中的索引位置乘以1秒的间隔即可获得等待时间。

不幸的是,我简化了我的问题,不知道此策略是否适用于我的实际实现。我编辑了我对实际代码的回答。我不认为我可以使用这种策略,因为我需要在字符串上迭代,我使用了“十次”作为示例,但它有点多complicated@Brejuro我编辑了我的答案来解决你的新问题。在for循环中建立一个动作序列(等待,阻止,等待,阻止…)。这样,您将为每个节点(字符)创建一个块。如果你需要更多信息,请告诉我。