我正在为我的侄女写一本故事书应用程序,我有一个关于SpriteKit的问题。我正在设置它,以便播放不同类型的音频。
我的问题是,如果用户更改页面,或者用户播放重播旁白按钮,则旁白将在彼此之上播放。所以最终听起来像是两个人互相交谈。
如何在触发新旁白时停止正在播放的所有旁白?
我在互联网上找不到任何相关帮助。我看过一些帖子说我们AVFoundation,但是从我的理解(虽然有限)看来更像是背景音乐而且只能播放一首曲目。
我是否误解了文档?有人可以帮我解答这个问题吗?
import SpriteKit
导入AVFoundation
课程第1页: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()
}
}
}
答案 0 :(得分:1)
您的阅读建议使用AVFoundation是一个很好的建议。我不会将AVFoundation描述为背景音乐。
是的,您只能使用AVAudioPlayer实例一次播放一个流,但是如果您的需求需要,您可以让多个AVAudioPlayers实例播放不同(或相同)的流。相对于AVFoundation的控件,SpritKit的音频动作非常有限,除了最基本的要求外,它们几乎无用。
我发现自己,在一个利用SKActions声音的项目的早期,但我不可避免地需要对音频进行更细粒度的控制(即音量控制,在播放中间停止等等)并最终使用AVAudioPlayer。
答案 1 :(得分:0)
如果你想用精灵套件动作停止声音效果,你需要做的是将一个子节点添加到主节点,让子节点播放音频声音,然后暂停子节点本身