我正在尝试创建一种特定类型的动画,每个纹理周期只需要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)
}
答案 0 :(得分:0)
我认为发生的事情是你播放一次声音,然后为所有纹理制作动画。您可以尝试做什么:
fund animation() {
for myTexture in textures {
let sound = SKAction.playSoundFileNamed("DisplayGesture.mp3", waitForCompletion: true)
sprite.texture = myTexture
}
}