【问题标题】:How do I stop playing a sound effect with SpriteKit and Swift?如何停止使用 SpriteKit 和 Swift 播放音效?
【发布时间】:2015-12-14 02:56:49
【问题描述】:

我正在为我的侄女写一个故事书应用程序,我有一个关于 SpriteKit 的问题。我正在尝试对其进行设置,以便播放不同类型的音频。

  1. 循环播放的背景音乐 (AVFoundation)
  2. 在新页面上播放的旁白,或在您按下旁白按钮重播旁白时播放的旁白 (SKAction)

我的问题是,如果用户更改页面,或者如果用户播放重播旁白按钮,旁白将在彼此之上播放。所以它最终听起来像是两个人在互相交谈。

当触发新旁白时,如何停止正在播放的所有旁白?

我在互联网上找不到任何相关帮助。我看过一些帖子说我们是 AVFoundation,但据我了解(尽管有限),这似乎更多地用于背景音乐,并且只能播放一首曲目。

我是否误解了文档?有人可以帮我解答这个问题吗?

import SpriteKit

导入 AVFoundation

class Page1: SKScene {

// MARK: Touch handling

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    /* Called when a touch begins */

    for touch: AnyObject in touches {
        let location = touch.locationInNode(self)
        println("\(location)")

        //checks if someone touched the menu button
        if menuButton.containsPoint(location) {
            println("Play story with sound!")
            settings.setInProgress()
            goToPauseMenu()
        }

        if soundButton.containsPoint(location) {
            println("Play story with sound!")
            settings.setInProgress()
            runAction(playNar)
        }

        //checks if someone touched the forward button
        if pageForward.containsPoint(location) {
            println("Next Page!")
            settings.setInProgress()
            nextPage()
        }

    }
}

【问题讨论】:

    标签: ios swift audio


    【解决方案1】:

    您的建议使用 AVFoundation 是很好的建议。不过,我不会将 AVFoundation 描述为仅用于背景音乐。

    是的,您一次只能使用一个 AVAudioPlayer 实例播放一个流,但如果您的需要,您可以让多个 AVAudioPlayer 实例播放不同(或相同)的流全部重叠。相对于 AVFoundation 的控件,SpritKit 的音频操作非常有限,以至于除了最基本的要求外,它们几乎无用。

    我发现自己在一个使用 SKActions 声音的项目的早期,但不可避免地我需要对我的音频进行更细粒度的控制(即音量控制、在播放中停止等)并最终使用 AVAudioPlayer。

    【讨论】:

    • 是的,SKAction 的意思是,从文档中逐字逐句地“播放简单的声音”。例如, pew pew pew 是激光冲击波。您需要使用 AVFoundation 进行实际控制。
    • 嗨 PixelCloudSt。你是绝对正确的!我在这方面有点新手,所以我认为我们只能有一次实例总数。我想我错过了实例的定义......无论如何,你的建议是正确的。我意识到我的错误。非常感谢您帮助回答我的问题。
    【解决方案2】:

    如果你想停止精灵套件动作的声音效果,你需要做的是在你的主节点上添加一个子节点,让子节点播放音频,然后暂停子节点本身

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      • 1970-01-01
      • 2012-10-18
      • 2016-12-07
      相关资源
      最近更新 更多