首页 > 解决方案 > 停止 SKAudioNode 播放

问题描述

我试图仅在玩家移动时播放脚步声。我添加了一个检查以查看播放器是否已经在移动,以确保它不会在彼此之上播放音频。

由于某种原因footstepSound.run(SKAction.stop())无法正常工作,这导致一堆曲目相互播放,这听起来很糟糕。

有任何想法吗?

        let footstepSound = SKAudioNode(fileNamed: "Footsteps.mp3")
        if (degree != 50) {
            if (isFootstepping) { return }
            isFootstepping = true
            self.addChild(footstepSound)
        }
        else if (isFootstepping && degree == 50) {
            isFootstepping = false
            footstepSound.run(SKAction.stop())
            footstepSound.removeFromParent()
        }

标签: swiftsprite-kit

解决方案


解决了!问题是footstepSound 变量没有全局声明。这导致在每个函数调用上创建一个新变量,因此当 .removeFromParent 被调用时,它永远不会引用旧变量。


推荐阅读