Ich habe eine for-Schleife, die 10 Mal ausgeführt wird, jedes Mal einen Knoten erstellen und es der Szene hinzufügen. Ich möchte jedoch, dass zwischen jedem hinzuzufügenden Knoten eine Verzögerung liegt (fügen Sie einen Knoten hinzu, warten Sie eine Sekunde, fügen Sie einen Knoten hinzu, warten Sie eine Sekunde usw.)Warten auf SKAction-Abschluss in einer for-Schleife
Jedoch nach der ersten 1 Sekunde alle 10 Knoten werden gleichzeitig hinzugefügt. Wie kann ich diesen gewünschten Effekt des Wartens einer Sekunde zwischen jedem hinzugefügten Knoten erreichen?
Hier ist mein Code:
EDIT:
func createText(correct: Bool) {
let text = SKNode()
var line: String!
addChild(text)
if correct {
line = (GKRandomSource.sharedRandom().arrayByShufflingObjectsInArray(happyLines) as! [String])[0]
} else {
line = (GKRandomSource.sharedRandom().arrayByShufflingObjectsInArray(sadLines) as! [String])[0]
}
var xPos = self.frame.midX + 300
var yPos = self.frame.midY
var spaces = 1
// For each character in sentence, create a node of it
for character in line.characters {
runAction(SKAction.waitForDuration(1.0)) {
if spaces == 4 {
spaces = 0
print("space")
xPos = self.frame.midX + 300
yPos -= 30
}
xPos += 10
if character != " " {
let letter = SKLabelNode(fontNamed: GameScene.fontName)
letter.fontSize = 14 * GameScene.fontScale
letter.position = CGPoint(x: xPos, y: yPos)
letter.text = String(character)
text.addChild(letter)
} else {
spaces += 1
xPos += 10
}
}
}
runAction(SKAction.waitForDuration(2.0)) {
text.removeAllChildren()
text.removeFromParent()
}
}
Erstellen Sie eine Aktionsfolge (warten, blockieren, warten, blockieren ...) in einer for-Schleife. Auf diese Weise erstellen Sie einen Block pro Knoten (Zeichen). Wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen. – Whirlwind