我在这里和那里进行了一些搜索,但我没有找到(或理解)如何在 SpriteKit 中的循环中进行延迟。
这就是想法:我有一些 SKSpriteNodes 排序在一个数组中,我想在屏幕上显示它们,每秒一个。问题是......我根本无法做到(对不起,我对此很陌生)。
let sprite1 = SKSpriteNode(color: .red, size: CGSize(width: 20, height: 20))
sprite1.position = CGPoint(x: 100, y: 100)
let sprite2 = SKSpriteNode(color: .red, size: CGSize(width: 20, height: 20))
sprite2.position = CGPoint(x: 100, y: 300)
let sprite3 = SKSpriteNode(color: .red, size: CGSize(width: 20, height: 20))
sprite3.position = CGPoint(x: 300, y: 100)
let sprite4 = SKSpriteNode(color: .red, size: CGSize(width: 20, height: 20))
sprite4.position = CGPoint(x: 300, y: 300)
let allSprites : [SKSpriteNode] = [sprite1, sprite2, sprite3, sprite4]
let delay = 1.0
var i = 0
while i <= 3
{
let oneSprite = allSprites[i]
self.addChild(oneSprite)
DispatchQueue.main.asyncAfter(deadline : .now() + delay) {
i = i + 1
}
}
如果你问:这根本不起作用。似乎没有读取 DispatchQueue.main.asyncAfter 中的内容。
所以,如果你能帮助我理解为什么,那就太好了。我不挑剔,我不能用“for”循环来回答。
问候,