【问题标题】:Swift - Adding animation and sound: Using animateWithTextures:Swift - 添加动画和声音:使用 animateWithTextures:
【发布时间】:2015-12-13 17:39:58
【问题描述】:

我正在尝试创建一种特定类型的动画,该动画需要声音和动画在每个纹理循环中恰好出现 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)
}

【问题讨论】:

  • “特定纹理”是什么意思?
  • 我只是使用抽象来指代我将附加的随机纹理。我不会过多关注这一点。要考虑的主要事情是通过一组 3 个或更多纹理的动画。
  • 好的。只是确保。谢谢
  • 我唯一想到的是,使用 animateWithTextures 方法,它包含一个参数 timePerFrame,它是一个 NSTimeInterval。如果有某种方法可以覆盖 animateWithTextures 方法并利用 timePerFrame 仅合并每个纹理的声音和 popAnimation,那很可能会起作用。
  • 另外,您可以尝试在组中添加一个快速暂停(completeAnimation)。例如。 (声音、动画、暂停)。让我做一些研究,看看我们是否可以做这两个想法中的任何一个。

标签: ios swift animation sprite-kit swift2


【解决方案1】:

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

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

【讨论】:

  • 我已经尝试过了,但该方法的问题是 for 循环在编译时执行。所以动画发生得太快了,你看不到它们,声音也被窃听了。
  • 那么,如果声音是 0.5 秒长,那么动画应该持续 1 秒还是 1.5 秒?
  • 我实际上是在尝试遍历每个纹理,并在显示每个单独的纹理时,使用 popAnimation 对其进行动画处理并为其播放声音。因此,如果数组中有 5 个纹理,则 5 个纹理中的每一个都会有一个 popAnimation 并播放声音(对于声音的长度或更长一点)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多