使用 SpriteKit 时如何暂停声音

Posted

技术标签:

【中文标题】使用 SpriteKit 时如何暂停声音【英文标题】:How to pause the sound when use SpriteKit 【发布时间】:2013-11-03 15:58:43 【问题描述】:

我想用SpriteKit播放声音,问题是我用的是函数:

[SKAction playSoundFileNamed:@"sound.wav" waitForCompletion:NO];

但是当我想暂停游戏时,声音还在播放。

skview.pause设置为YES时如何停止声音,skview.pause设置为NO时如何恢复声音?

【问题讨论】:

如果我没记错的话,你应该使用 playSoundFileNamed 方法来播放音效... 1 或 2 秒的短的东西,比如爆炸声 而且我认为如果您使用 AVAudioPlayer 作为背景音乐会更好,请查看 raywenderlich.com 上的本教程(raywenderlich.com/49625/sprite-kit-tutorial-space-shooter)查看声音部分 你也可以使用像 ObjectAL 这样的音频引擎 我使用playSoundFileNamed方法播放一些短音,就像爆炸一样,但应该是暂停; 【参考方案1】:

已经有一段时间了,但这里是您可以使用 AVAudio 做什么的基础。我将在此示例中使用背景音乐,但可以以任何方式完成。您可以将其放在 SKSpriteNode 的子类中,以具有可以自行或其他人暂停的自定义声音。

//Add this to your imports:
#import <AVFoundation/AVFoundation.h>;

//Add the following variable in your interface.
AVAudioPlayer *player;

// Put this in an init or something of the like.
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"musicFileSound" ofType:@"wav"]];
_player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];

然后开始使用[_player play];

使用[_player pause]暂停。

还有[_player stop]

Here is the documentation for it, there are some cool things you can do with it.

【讨论】:

以上是关于使用 SpriteKit 时如何暂停声音的主要内容,如果未能解决你的问题,请参考以下文章

Spritekit - 在 didBecomeActive 时保持游戏暂停

在 ios8 中使用 appdelegate 暂停 spritekit 游戏

使用 SpriteKit 和内置物理引擎移动和跳跃精灵

SpriteKit 暂停和恢复 SKView

SpriteKit和SceneKit - 如何完全暂停游戏?

使用 swift 和 spritekit,你如何阻止场景在变得活跃/移动到前台后取消暂停?