我正在尝试让一个球改变位置 10 次:
for _ in 10 {
let ballRandomX = Int(arc4random_uniform(896)) + 64
let ballRandomY = Int(arc4random_uniform(640)) + 64
let moveAction = SKAction.moveTo(CGPoint(x: ball1RandomX, y: ball1RandomY), duration: 1.0)
self.ball.runAction(moveAction)
}
但是球只会移动一次。我发现所有的循环都是在动画结束之前完成的。这意味着当第一步移动时,第二个循环就会到来并改变球的目的地。计算机做这件事的速度如此之快,看起来它只做了一步。最明显的解决方案是停止循环,直到动画结束。我试过暂停,但它不起作用。有什么想法吗?
最佳答案
您要使用的是序列操作。
var allActions = [SKAction]()
for _ in 0..<10 {
let ballRandomX = Int(arc4random_uniform(896)) + 64
let ballRandomY = Int(arc4random_uniform(640)) + 64
let moveAction = SKAction.moveTo(CGPoint(x: ball1RandomX, y: ball1RandomY), duration: 1.0)
allActions.append(moveAction)
}
let sequenceAction = SKAction.sequence(allActions)
self.ball.runAction(sequenceAction)
这将依次运行所有操作。
关于ios - 循环没有使动画工作,swift 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34683798/