尝试使用 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/