当前位置:   iOS > 正文

SKAudioNode播放一次声音

sprite-kit,swift,go,ios,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

我似乎无法找到有关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"主要用于音乐,因为你可以将它用于定位音频,这对音乐来说不太可能用得那么多.
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/iOS/detail/8415
推荐阅读
相关标签
  

闽ICP备14008679号