首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SKAudioNode播放一次声音

SKAudioNode播放一次声音
EN

Stack Overflow用户
提问于 2015-12-18 14:58:34
回答 2查看 7K关注 0票数 5

我似乎找不到很多关于SKAudioNode的信息。我怎么才能只演奏一次?我不想重复这个声音。

我想要完成的是,每次子弹射出时,在spritekit中播放一个简短的激光声音。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-03 19:00:34

不幸的是,@KnightOfDragon的说法是不正确的(但我没有足够的声誉来发表评论)。

SKAudioNode是在iOS 9中引入的,它意味着取代SKAction.playSoundFileNamed(...),因为它的功能要强大得多(您可以将它作为子级添加到SpriteKit SKNode中,如果属性positional设置为true,则自动添加3D音频混合)。

为了在SKAudioNode中播放一次声音,请使用以下代码:

代码语言:javascript
复制
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
}

更新

请看这里,如何在音频节点上使用操作:SKAction->Audio-Stuff。文件上说:

使用SKAction playSoundFileNamed:waitForCompletion:只适用于短杂费。长期运行的背景音乐使用AVAudioPlayer。

这确实是而不是的意思,SKAudioNode不应该用于一次性音频.使用playSoundFileNamed,您不能更改音量或暂停/停止播放等等。

票数 14
EN

Stack Overflow用户

发布于 2015-12-18 15:02:47

如果您正在尝试执行声音效果,则在创建该效果的雪碧上使用SKAction.playSoundFileNamed(...)。SKAudioNode更适合在游戏中播放音乐。

示例:

代码语言:javascript
复制
//we have ship as an SKSpriteNode

//lets fire laser

ship.runAction(SKAction.playSoundFileNamed("pewpewpew.caf",waitForCompletion:false));
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34358389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档