为每一个元素迭代时添加一个延迟

问题描述:

尝试使用SKLabelNode在标签上逐个显示下面数组中的元素。我认为问题在于它比数组更快地遍历数组,因此导致崩溃,因为self.addChild()尝试再次显示“Set”,而“Ready”仍在显示。为每一个元素迭代时添加一个延迟

我的问题是,我如何减慢这个迭代,以便在“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) 
} 
+0

是newLevelLabel a UELabel?也添加newLevelLabel三次到父视图似乎没有意义 – axelspark

+0

这是一个倒数的游戏?在你的程序中的这个代码 - 在sceneDidLoad,update()等? –

+0

此代码是在...重写func didMove(查看:SKView),它是一个SKLabelNode ... – stinkyProgram

它之所以被立即会去是因为你不链条一切行动以相同的顺序,那么你所有的阶段都在同一时间运行:

试试这个,我现在不是编译器:

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) 
+0

你正在增加你的等待时间,所以准备好了,然后设置它是2秒,并且在set和go之间是3秒。我想你想拿出'waitTime + = 1' – Knight0fDragon

+0

@ Knight0fDragon是的,这是一个解决问题的例子,我希望臭臭的程序知道如何管理他的等待时间 –

+0

谢谢这么多家伙,我只编程过为期3个月,所以这对我来说是新的,谢谢。 – stinkyProgram