arrays - 在遍历数组时为每个元素添加延迟

标签 arrays swift for-loop sprite-kit delay

尝试使用 SKLabelNode 在标签上逐一显示下面数组中的元素。我认为问题是它迭代数组的速度比序列运行它的过程要快,因此导致崩溃,因为 self.addChild() 试图再次显示“Set”,而还在显示“Ready”。

我的问题是,如何减慢此迭代,以便在显示“已设置”之前“就绪”可以出现和消失?

let readySetGo = ["Ready", "Set", "GO!"]
for i in readySetGo {
    newLevelLabel.text = i
    newLevelLabel.fontSize = 60

    let wait = SKAction.wait(forDuration: 2)
    let remove = SKAction.removeFromParent()
    let sequence = SKAction.sequence([wait, remove])

    newLevelLabel.run(sequence)

    self.addChild(newLevelLabel)
}

最佳答案

它立即进入 GO 的原因是因为您没有按相同顺序链接所有操作,所以您的所有阶段都在同时运行:

试试这个,我现在还没有编译器:

let readySetGo = ["Ready", "Set", "GO!"]

newLevelLabel.fontSize = 60

let seq: [SKAction]=[]
let waitTime:TimeIneterval = 2

for i in readySetGo {

    let block = SKAction.run{
        self.newLevelLabel.text = i
    }

    let wait = SKAction.wait(forDuration: waitTime)

    seq.append(wait)
    seq.append(block)

}

let wait = SKAction.wait(forDuration: waitTime)
let remove = SKAction.removeFromParent()
seq.append(wait)
seq.append(remove)
let sequence = SKAction.sequence(seq)

newLevelLabel.run(sequence)

self.addChild(newLevelLabel)

关于arrays - 在遍历数组时为每个元素添加延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46064520/

相关文章:

javascript - 为什么我的数组未定义?

c++ - R 数值 vector 列表 -> C++ 2d array with Rcpp

Swift - 集合与数组

python - 如何删除空白以保持平衡?

java - 当数组足够时使用 Java List

c - 使用数组和函数求平均值

swift - 我们什么时候可以开始向 iOS App Store 提交使用 Swift 编程语言编写的应用程序?

ios - 使用 swift 更改 Storyboard选项卡栏图标

javascript - 创建一个有两个参数的函数,参数 a 将是一个数组,参数 b 将在数组中查找一个元素

javascript - 循环遍历具有不同结果的 JavaScript 元素数组的两种方法