我的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)
}
答案 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)