J'ai un code qui exécute une action d'attente pendant une durée de columnTime, puis exécute un bloc de code. Il en résulte dans le bloc en cours d'exécution une fois, puis le temps d'attente, puis bloquer, puis le temps d'attente, etc.Fonction permettant d'exécuter une action d'attente à des intervalles décroissants indéfiniment
func startSpawning(){
print(columnTime)
let wait = SKAction.waitForDuration(columnTime)
let block = SKAction.runBlock({[unowned self] in self.spawnObstacle()})
let sequence = SKAction.sequence([wait, block])
runAction(SKAction.repeatActionForever(sequence), withKey: "spawning")
} //startSpawning
Je veux les éléments suivants: attendez 5 secondes, le code de bloc exécuter ce qui diminue le temps de la colonne à 4,95 secondes, exécutez attendez 4,95 secondes, exécutez le code de bloc qui réduit le temps d'attente à 4,90 secondes, attendez 4,90 secondes, etc.
J'ai essayé ce qui suit mais il exécute chaque action encore et encore et il n'y a pas d'attente. Ma sortie inonde les instructions d'impression des blocs de code d'attente et de blocage.
func startSpawning(){
let wait = SKAction.runBlock({[unowned self] in self.waitFunc()})
let block = SKAction.runBlock({[unowned self] in self.spawnObstacle()})
let sequence = SKAction.sequence([wait, block])
runAction(SKAction.repeatActionForever(sequence), withKey: "spawning")
} //startSpawning
func waitFunc() -> SKAction{
print("running wait func")
return SKAction.waitForDuration(getColumnTime())
}
func getColumnTime() -> NSTimeInterval {
return columnTime
}
L'action ne serait-elle pas lancée une seule fois? – lelephant
non vous appelez startSpawning() à la fin de la séquence pour démarrer une nouvelle séquence – Knight0fDragon
incroyable! c'est tout ce que j'ai à dire, mais il y a une longueur de caractère commentaire, donc j'ai écrit cette phrase aussi – lelephant