【发布时间】: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