ios - 循环没有使动画工作,swift 2

标签 ios swift sprite-kit

我正在尝试让一个球改变位置 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/

相关文章:

ios - 如何快速在 iOS 的全局请求中添加 HTTP header

ios - 使用 SKShader 修改单个像素

ios - iOS 8 和 iOS 7 的 UDID 替换

ios - iPad 周围的黑框 Build

ios - 如何修复 : "fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)"

ios - 在 Storyboard 中选择图像时,Image-Set 中的语言方向不生效

ios - 如何在 iOS swift4 中更改特定的 UITableviewcell 颜色

iOS Swift SpriteKit - 如何检测用户触摸 Sprite 之间耗时

ios - 在后台重置 Sprite 节点

swift - 如何在 Swift 中设置速度