Swift 在一个动画循环后隐藏SKSpriteNode
我在游戏中得到了这个爆炸代码:Swift 在一个动画循环后隐藏SKSpriteNode,swift,sprite-kit,Swift,Sprite Kit,我在游戏中得到了这个爆炸代码: func addExplosion(explosionNode: SKSpriteNode, atPosition position: CGPoint) { explosion = SKSpriteNode(texture: explosionTex) //Animation heroFlyTexturesArray = [SKTexture(imageNamed: "explosion1_0001.png"), SKTextur
func addExplosion(explosionNode: SKSpriteNode, atPosition position: CGPoint) {
explosion = SKSpriteNode(texture: explosionTex)
//Animation
heroFlyTexturesArray = [SKTexture(imageNamed: "explosion1_0001.png"), SKTexture(imageNamed: "explosion1_0002.png"), SKTexture(imageNamed: "explosion1_0003.png"), SKTexture(imageNamed: "explosion1_0004.png"), SKTexture(imageNamed: "explosion1_0005.png"), SKTexture(imageNamed: "explosion1_0006.png"), SKTexture(imageNamed: "explosion1_0007.png"), SKTexture(imageNamed: "explosion1_0008.png"), SKTexture(imageNamed: "explosion1_0009.png"), SKTexture(imageNamed: "explosion1_0010.png"), SKTexture(imageNamed: "explosion1_0011.png"), SKTexture(imageNamed: "explosion1_0012.png"), SKTexture(imageNamed: "explosion1_0013.png"), SKTexture(imageNamed: "explosion1_0014.png"), SKTexture(imageNamed: "explosion1_0015.png"), SKTexture(imageNamed: "explosion1_0016.png"), SKTexture(imageNamed: "explosion1_0017.png"), SKTexture(imageNamed: "explosion1_0018.png"), SKTexture(imageNamed: "explosion1_0019.png"), SKTexture(imageNamed: "explosion1_0020.png"), SKTexture(imageNamed: "explosion1_0021.png"), SKTexture(imageNamed: "explosion1_0022.png"), SKTexture(imageNamed: "explosion1_0023.png"), SKTexture(imageNamed: "explosion1_0024.png"), SKTexture(imageNamed: "explosion1_0025.png"), SKTexture(imageNamed: "explosion1_0026.png"), SKTexture(imageNamed: "explosion1_0027.png"), SKTexture(imageNamed: "explosion1_0028.png"), SKTexture(imageNamed: "explosion1_0029.png"), SKTexture(imageNamed: "explosion1_0030.png"), SKTexture(imageNamed: "explosion1_0031.png"), SKTexture(imageNamed: "explosion1_0032.png"), SKTexture(imageNamed: "explosion1_0033.png"), SKTexture(imageNamed: "explosion1_0034.png"), SKTexture(imageNamed: "explosion1_0035.png"), SKTexture(imageNamed: "explosion1_0036.png"), SKTexture(imageNamed: "explosion1_0037.png"), SKTexture(imageNamed: "explosion1_0038.png"), SKTexture(imageNamed: "explosion1_0039.png"), SKTexture(imageNamed: "explosion1_0040.png"), SKTexture(imageNamed: "explosion1_0041.png"), SKTexture(imageNamed: "explosion1_0042.png"), SKTexture(imageNamed: "explosion1_0043.png"), SKTexture(imageNamed: "explosion1_0044.png"), SKTexture(imageNamed: "explosion1_0045.png"), SKTexture(imageNamed: "explosion1_0046.png"), SKTexture(imageNamed: "explosion1_0047.png"), SKTexture(imageNamed: "explosion1_0048.png"), SKTexture(imageNamed: "explosion1_0049.png"), SKTexture(imageNamed: "explosion1_0050.png"), SKTexture(imageNamed: "explosion1_0051.png"), SKTexture(imageNamed: "explosion1_0052.png"), SKTexture(imageNamed: "explosion1_0053.png"), SKTexture(imageNamed: "explosion1_0054.png"), SKTexture(imageNamed: "explosion1_0055.png"), SKTexture(imageNamed: "explosion1_0056.png"), SKTexture(imageNamed: "explosion1_0057.png"), SKTexture(imageNamed: "explosion1_0058.png"), SKTexture(imageNamed: "explosion1_0059.png"), SKTexture(imageNamed: "explosion1_0060.png"), SKTexture(imageNamed: "explosion1_0061.png"), SKTexture(imageNamed: "explosion1_0062.png"), SKTexture(imageNamed: "explosion1_0063.png"), SKTexture(imageNamed: "explosion1_0064.png"), SKTexture(imageNamed: "explosion1_0065.png"), SKTexture(imageNamed: "explosion1_0066.png"), SKTexture(imageNamed: "explosion1_0067.png"), SKTexture(imageNamed: "explosion1_0068.png"), SKTexture(imageNamed: "explosion1_0069.png"), SKTexture(imageNamed: "explosion1_0070.png"), SKTexture(imageNamed: "explosion1_0071.png"), SKTexture(imageNamed: "explosion1_0072.png"), SKTexture(imageNamed: "explosion1_0073.png"), SKTexture(imageNamed: "explosion1_0074.png"), SKTexture(imageNamed: "explosion1_0075.png"), SKTexture(imageNamed: "explosion1_0076.png"), SKTexture(imageNamed: "explosion1_0077.png"), SKTexture(imageNamed: "explosion1_0078.png"), SKTexture(imageNamed: "explosion1_0079.png"), SKTexture(imageNamed: "explosion1_0080.png"), SKTexture(imageNamed: "explosion1_0081.png"), SKTexture(imageNamed: "explosion1_0082.png"), SKTexture(imageNamed: "explosion1_0083.png"), SKTexture(imageNamed: "explosion1_0084.png"), SKTexture(imageNamed: "explosion1_0085.png"), SKTexture(imageNamed: "explosion1_0086.png"), SKTexture(imageNamed: "explosion1_0087.png"), SKTexture(imageNamed: "explosion1_0088.png"), SKTexture(imageNamed: "explosion1_0089.png"), SKTexture(imageNamed: "explosion1_0090.png")]
let heroFlyAnimation = SKAction.animate(with: heroFlyTexturesArray, timePerFrame: 0.01)
let flyHero = SKAction.repeat(heroFlyAnimation, count: 1)
// repeatForever(heroFlyAnimation)
explosion.run(flyHero, withKey: "explosion")
explosion.position = position
explosion.size.height = 130
explosion.size.width = 200
explosionObject.addChild(explosion)
if explosionObject.frame(flyHero) == 90 {}
}
}
动画工作,但我有一个问题,最后一帧的动画,这不会消失在我的游戏场景。我需要在一个动画循环后隐藏它,因为我的游戏场景中有很多爆炸的动作。使用完成块运行你的动作。这允许您在操作完成时执行一些代码
explosion.run(heroFlyAnimation, completion: {
explosion.removeFromParent()
})
这不是问题的一部分,但您可能会发现,使用循环构造HeroflyTextureArray而不是在代码中列出所有SKTexture对象也很有用。请尝试以下方法:
var heroFlyTexturesArray = [SKTexture]()
for i in 1 ... 90 {
let numericString = i < 10 ? "0\(i)" : "\(i)"
let texture = SKTexture(imageNamed: "explosion1_00\(numericString).png")
heroFlyTexturesArray.append(texture)
}
在需要使用关键点设置动画的情况下,SKAction.sequence是您最好的朋友 explosion.runSKAction.sequence[heroFlyAnimation,SKAction.removeFromParent],带有键:explosion