Swift 4中的Sprite Kit动画和纹理图集

时间:2017-09-15 02:47:38

标签: swift sprite-kit skspritenode sktextureatlas

目前正致力于通过一系列图像处理需要一点动画的应用程序。我已经在网上完成了大量关于如何解决我的问题的研究但是没有为Swift 4做任何事情。下面是我的代码,它显示了循环中的第一张图片,当我运行应用程序但根本没有动画。一切都很好,我没有看到我的代码有问题,但也许你们可以提供帮助。高级赞赏它!

let atlas = SKTextureAtlas(named: “mypic”)
var TextureArray = [SKTexture]()
var person = SKSpriteNode()

    override func didMove(to view: SKView) {
        person = SKSpriteNode(imageNamed: "red_1.png")
        person.size = CGSize(width: 150, height: 129)
        person.position = CGPoint(x: 0, y: 0)
        person = SKSpriteNode(imageNamed: atlas.textureNames[0])

        for i in 1...atlas.textureNames.count {
            let Name = "red_\(i).png"
            TextureArray.append(SKTexture(imageNamed: Name))
        }

        self.addChild(person)
    }

    override func update(_ currentTime: TimeInterval) {
        let myAnimation = SKAction.animate(with: TextureArray, timePerFrame: 0.1)
        person.run(SKAction.repeatForever(myAnimation))
    }

1 个答案:

答案 0 :(得分:3)

动画动作放在update中,每帧执行一次。因此,如果游戏以60 FPS运行,则update会在一秒内被调用60次。这意味着每秒person都需要运行60个新的myAnimation操作。

要解决此问题,请考虑将动画操作放在代码中的其他位置,例如将person添加到场景后立即。由于这是repeatForever操作,因此动画将按预期运行,直到从节点中删除操作,或者从场景中删除节点。

希望这有帮助!