在Action完成后执行某些操作

时间:2016-01-21 12:27:52

标签: swift sprite-kit

我的SpriteKit有问题。 我正在拍摄一张通过七张照片拍摄的动画片。它显示了一个单元的瞄准过程。完成该过程后,我想启动一个实现的方法。有谁知道我怎么能找到行动何时完成?

    func shootAnmination(){
    var array:[SKTexture] = []
    for x in 1...6{
        array.append(SKTexture(imageNamed: ("fire" + String(x))))
    }
    let animation = SKAction.animateWithTextures(array, timePerFrame: 0.5)
    let unitFire = SKAction.repeatAction(animation, count: 1)

    self.runAction(unitFire)
}

4 个答案:

答案 0 :(得分:3)

据我所知,没有办法找出行动何时完成,但你可以使用

func runAction(_ action: SKAction, completion block: () -> Void)

开始你的方法。操作完成后调用完成块。

答案 1 :(得分:1)

最简单的方法是使用计时器(0.5秒* 7)

之类的东西
NSTimer.scheduledTimerWithTimeInterval(3.5, target: self, selector: "timerDidFire:", userInfo: userInfo, repeats: false)

答案 2 :(得分:1)

将self.runAction与完成块一起使用:这是Objective C代码:

[node runAction:moveUp completion:^{
    NSLog(@"RUNNING MOVE DOWN");
    [node setHidden: NO];
    [node runAction: moveDown];
}];

答案 3 :(得分:1)

或者您可以使用SKAction.sequence / 1和SKAction.runBlock / 1在重复操作后执行操作:

let animation = SKAction.animateWithTextures(array, timePerFrame: 0.5)
let unitFire = SKAction.repeatAction(animation, count: 1)
let sequence = SKAction.sequence([unitFire,SKAction.runBlock({ () -> Void in
            // your code
        })])

self.runAction(unitFire)