Swift - 添加动画和声音:使用animateWithTextures:

时间:2015-12-13 17:39:59

标签: ios swift animation sprite-kit swift2

我正在尝试创建一种特定类型的动画,每个纹理周期只需要1秒的声音和动画。

每当有人点击一个按钮时,它会将一个新纹理附加到一个SKTextures []数组中,然后我有一个SKSpriteNode动画通过每个纹理一次。唯一的问题是,我似乎无法找到一种方法来为每个纹理播放声音文件,因为它会动画。我还想为SKSpriteNode在穿过纹理时更改的每个纹理创建一个动画。

这是一个流程示例:

  

按钮点击

     
    

附加SKTexture数组

         
      

SKSpriteNode.animateUsingTextures(SKTextureArray,timePerFrame:1)

             
        

当每个单独的纹理显示,为其设置动画,播放声音。

      
    
  

以下是我的工作原理。

(代码只是我所拥有的抽象)

var textures: [SKTexture] = []
let sprite: SKSpriteNode()
let scaleUp = SKAction.scaleTo(300, duration: 0.2)
let scaleDown = SKAction.scaleTo(200, duration: 0.2)
let popAnimation = SKAction.sequence([scaleUp, scaleDown])

func buttonClicked() {
    textures.append("Specific Texture")
    sprite.animation() // Calls Animation Function
}

func animation() {
    let sound = SKAction.playSoundFileNamed("DisplayGesture.mp3", waitForCompletion: true)
    let animation = SKAction.animateWithTextures(textures, timePerFrame: 1)
    let completeAnimation = SKAction.group([sound, animation, popAnimation])

    sprite.runAction(completeAnimation)
}

1 个答案:

答案 0 :(得分:0)

我认为发生的事情是你播放一次声音,然后为所有纹理制作动画。您可以尝试做什么:

fund animation() {
     for myTexture in textures {
          let sound = SKAction.playSoundFileNamed("DisplayGesture.mp3", waitForCompletion: true)
          sprite.texture = myTexture
     }
}