如何在 while 循环 spritekit 内生成之前等待
how to wait before spawning inside while loop spritekit
代码的目标是生成卡片,直到卡片总数达到 17。代码在这种情况下工作正常,但我希望它在生成另一张卡片之前等待 1 秒。该代码目前立即生成所有卡片(并在达到 17 之前停止),这是我不想要的。这是一个简化版本,供参考,它在 SpriteKit 中的 touchesBegan:
else if standLabel.contains(touch.location(in: self)) {
let waitForCard = SKAction.wait(forDuration: 1)
while dealerCardValues.sum() <= 16 {
self.run(waitForCard)
spawnCard()
}
等待时间无效。感谢任何帮助。
您可以为此使用定时器。计时器每 1 秒调用一次,它运行 spawnCard()
函数并将计数器变量加 1。一旦 counter
达到 17,我们就会使其无效以阻止它再次触发。
所以替换这段代码:
let waitForCard = SKAction.wait(forDuration: 1)
while dealerCardValues.sum() <= 16 {
self.run(waitForCard)
spawnCard()
有了这个:
var counter = 1
Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { [self] timer in
counter += 1
spawnCard()
if counter == 17 {
timer.invalidate()
}
}
代码的目标是生成卡片,直到卡片总数达到 17。代码在这种情况下工作正常,但我希望它在生成另一张卡片之前等待 1 秒。该代码目前立即生成所有卡片(并在达到 17 之前停止),这是我不想要的。这是一个简化版本,供参考,它在 SpriteKit 中的 touchesBegan:
else if standLabel.contains(touch.location(in: self)) {
let waitForCard = SKAction.wait(forDuration: 1)
while dealerCardValues.sum() <= 16 {
self.run(waitForCard)
spawnCard()
}
等待时间无效。感谢任何帮助。
您可以为此使用定时器。计时器每 1 秒调用一次,它运行 spawnCard()
函数并将计数器变量加 1。一旦 counter
达到 17,我们就会使其无效以阻止它再次触发。
所以替换这段代码:
let waitForCard = SKAction.wait(forDuration: 1)
while dealerCardValues.sum() <= 16 {
self.run(waitForCard)
spawnCard()
有了这个:
var counter = 1
Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { [self] timer in
counter += 1
spawnCard()
if counter == 17 {
timer.invalidate()
}
}