当前位置:  开发笔记 > 编程语言 > 正文

SKAudioNode播放一次声音

如何解决《SKAudioNode播放一次声音》经验,为你挑选了1个好方法。

我似乎无法找到有关SKAudioNode的更多信息.我怎么只播放一次声音?我不想重复声音.

我想要完成的是每次子弹产生时用spritekit播放一个短的激光声.



1> Juangamnik..:

不幸的是,@ KnightOfDragon所说的不正确(但我没有足够的声誉来评论).

SKAudioNode已经在iOS 9中引入并且意味着SKAction.playSoundFileNamed(...)它可以替代它,因为它功能更强大(您可以将它作为子项添加到SpriteKit中SKNode,如果属性positional设置为true,则会自动添加3D音频混合).

SKAudioNode使用以下代码播放声音一次:

if #available(iOS 9, *) {
    let pling = SKAudioNode(fileNamed: "pling.wav")
    // this is important (or else the scene starts to play the sound in 
    // an infinite loop right after adding the node to the scene).
    pling.autoplayLooped = false
    someNode.addChild(pling)
    someNode.runAction(SKAction.sequence([
        SKAction.waitForDuration(0.5),
        SKAction.runBlock {
            // this will start playing the pling once.
            pling.runAction(SKAction.play())
        }
    ])
}
else {
    // do it the old way
}
更新

看看这里,如何在音频节点上使用Actions:SKAction-> Audio-Stuff.文件说:

使用SKAction playSoundFileNamed:waitForCompletion:仅用于短期杂费.使用AVAudioPlayer可以长时间播放背景音乐.

但这并不意味着,一个SKAudioNode不应使用一次性音频.用playSoundFileNamed你无法改变音量或暂停/停止播放等.


@ Knight0fDragon:我不同意,因为`playSoundFileNamed`没有位置音频或任何其他更复杂的选项,并且意味着没有任何控制的简单的一次性音频.另一方面,`AVFoundation`使用起来更复杂,并且不容易集成到SpriteKit中.`SKAudioNode`是一种易于使用的方法,可将`AVFoundation`集成到SpriteKit中(因为它在幕后使用`AVFoundation`).但更重要的是我不认为,"SKAudioNode"主要用于音乐,因为你可以将它用于定位音频,这对音乐来说不太可能用得那么多.
推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有