简单的动作循环

时间:2015-06-25 17:59:39

标签: swift loops skaction

我试图通过循环运行它们来重复一组操作。运行其他东西时我的循环很好,但似乎无法运行动作。我的代码如下:

let pulse1 = SKAction.scaleTo(2.0, duration: 1.0)
let pulse2 = SKAction.scaleTo(0.5, duration: 1.0)
var i = 0

override func didMoveToView(view: SKView) {

for var i = 0; i <= 100; i++ { 
self.sun.runAction(pulse1)
self.sun.runAction(pulse2)

}

这将导致节点每次脉冲1和脉冲2,但不会再次。如果我添加

println("")

循环,它正确运行任何文本,但由于某种原因不运行像运行文本的操作。或许它确实如此,我不明白SKAction是如何工作的?无论哪种方式,循环正在执行,我相信。我不太确定循环中的SKAction调用有什么问题。

2 个答案:

答案 0 :(得分:0)

scaleTo只是更改节点的比例。一旦pulse1变为2.0并且pulse2变为0.5,runAction会反复运行,但您永远不会再次更改任何脉冲的比例。

这就是为什么你只是第一次看到它确实有效。

不要使用for循环,请尝试以下方法:

override func didMoveToView(view: SKView) {

    if (i % 2 == 0) {
        let pulse = SKAction.scaleTo(2.0, duration: 1.0)
    } else {
        let pulse = SKAction.scaleTo(0.5, duration: 1.0)
    }

    [self.sun runAction:pulse completion:^{

        if( i < 100 )
        {
            didMoveToView(view);
        }

    }];
}

答案 1 :(得分:0)

Maybe you can use class func repeatAction(_ action: SKAction, count count: Int) -> SKAction Put as many single actions in a sequence an run repeatAction for x times.