【问题标题】:Hide SKSpriteNode after one loop of animation动画循环一圈后隐藏 SKSpriteNode
【发布时间】:2017-10-24 21:30:00
【问题描述】:

我在我的游戏中得到了这个爆炸代码:

    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 {}
    }
}

动画有效,但我的动画最后一帧有问题,在我的 GameScene 中没有消失。我需要在一个动画循环后隐藏它,因为我的 GameScene 中有很多 SKAction 爆炸。

【问题讨论】:

    标签: swift sprite-kit


    【解决方案1】:

    使用完成块运行您的SKAction。这允许您在操作完成时执行一些代码。

    explosion.run(heroFlyAnimation, completion: {
        explosion.removeFromParent()
    })
    

    这不是您的问题的一部分,但您可能会发现使用循环构造 heroFlyTexturesArray 而不是在代码中列出所有 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)
    }
    

    【讨论】:

      【解决方案2】:

      在您需要使用按键制作动画的情况下,SKAction.sequence 是您最好的朋友 explosion.run(SKAction.sequence([heroFlyAnimation,SKAction.removeFromParent()]),withKey:"explosion")

      【讨论】:

        猜你喜欢
        • 2014-11-23
        • 1970-01-01
        • 1970-01-01
        • 2011-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多