为每一个元素迭代时添加一个延迟
尝试使用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)
}
它之所以被立即会去是因为你不链条一切行动以相同的顺序,那么你所有的阶段都在同一时间运行:
试试这个,我现在不是编译器:
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)
你正在增加你的等待时间,所以准备好了,然后设置它是2秒,并且在set和go之间是3秒。我想你想拿出'waitTime + = 1' – Knight0fDragon
@ Knight0fDragon是的,这是一个解决问题的例子,我希望臭臭的程序知道如何管理他的等待时间 –
谢谢这么多家伙,我只编程过为期3个月,所以这对我来说是新的,谢谢。 – stinkyProgram
是newLevelLabel a UELabel?也添加newLevelLabel三次到父视图似乎没有意义 – axelspark
这是一个倒数的游戏?在你的程序中的这个代码 - 在sceneDidLoad,update()等? –
此代码是在...重写func didMove(查看:SKView),它是一个SKLabelNode ... – stinkyProgram