简单的GIF像Spritekit一样的animation

我无法真正find一个简单的解决scheme,我看到的每个例子都只显示了非常复杂的解决scheme,但我所需要的只是2-3个图像,因此看上去好像是animation一样。 和animationGif一样的效果。 现在我有这个来创build一个图像

MonsterNode = SKSpriteNode(imageNamed: "MonsterNode_GameScene") 

但如何将MonsterNodevariables设置为这种animation? 我真的正在寻找实现这个所需的最less量的代码。

主要思想是为这个任务使用animateWithTextures 。 您需要设置精灵需要animation的所有帧以及每帧的显示时间。 然后使用repeatActionForever运行animation循环。

 // Add 3 frames let f0 = SKTexture.init(imageNamed: "MonsterNode_GameScene_0") let f1 = SKTexture.init(imageNamed: "MonsterNode_GameScene_1") let f2 = SKTexture.init(imageNamed: "MonsterNode_GameScene_2") let frames: [SKTexture] = [f0, f1, f2] // Load the first frame as initialization monsterNode = SKSpriteNode(imageNamed: "MonsterNode_GameScene_0") monsterNode.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame)) // Change the frame per 0.2 sec let animation = SKAction.animateWithTextures(frames, timePerFrame: 0.2) monsterNode.runAction(SKAction.repeatActionForever(animation)) self.addChild(monsterNode) 

我得到了大红色X的相同问题。所以,而不是在代码中定义monsterNode。 我通过从atlas文件夹中拖动animation的第一个图像创buildsks屏幕上的monstor。 然后从属性部分分配一个名字:monsterNode。 这是代码

 var runAnimation = [SKTexture]() override func didMove(to view: SKView) { let runAtlas = SKTextureAtlas(named: "run") for index in 1...runAtlas.textureNames.count{ let textureName = String.init(format: "run%1d", index) runAnimation.append(SKTexture(imageNamed: textureName)) } } override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { let monsterNode = self.childNode(withName: "monsterNode") if(monsterNode != nil){ let animation = SKAction.animate(with: runAnimation, timePerFrame: 0.1) monsterNode?.run(SKAction.repeatForever(animation)) } }