我正在尝试在我的游戏中添加背景音乐。我有一个开关,可以将音乐静音,当你再次轻敲它时,它就会播放音乐。这是播放音乐的代码
var backgroundMusic = SKAction.playSoundFileNamed("Background.wav", waitForCompletion: true)
runAction(SKAction.repeatActionForever(backgroundMusic), withKey: "music")
我知道当您轻敲开关时,waitForCompletion应该设置为false以停止音乐。但是当我将它设置为false时,音乐不会播放,就像静态声音一样。
self.removeActionForKey("music")
这是我用来停止音乐的代码。我想知道你是否可以将音乐静音,直到曲目结束,或者有另一种方法可以在SpriteKit中永远播放音乐。
发布于 2015-03-17 11:06:34
waitForCompletion
:如果为true
,则该action
的播放时长与音频播放时长相同。如果为false
,则认为action
已立即完成。
将waitForCompletion
设置为false
,将创建一个持续时间为0
的操作。因此,“永远重复”操作将无法正常工作。
你必须等待它播放的持续时间,然后再从开始播放,让音乐循环。因此将waitForCompletion
设置为true
,
var backgroundMusic = SKAction.playSoundFileNamed("Background.wav", waitForCompletion: true)
您可以使用removeActionForKey
停止音乐。
发布于 2015-03-17 13:26:20
我推荐使用ObjectAL而不是Spritekit来播放背景音乐。下面是我用来播放背景音乐的一种简单方法,借用自SKUtils
-(AVAudioPlayer*)setupSound:(NSString*)file volume:(float)volume{
NSError *error;
NSURL *url = [[NSBundle mainBundle] URLForResource:file withExtension:nil];
AVAudioPlayer *s = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
s.numberOfLoops = -1;
s.volume = volume;
[s prepareToPlay];
return s;
}
然后按如下方式调用它:
...
AVAudioPlayer *bgplayer = [self setupSound:@"Background.wav" volume:1.0];
...
[bgplayer play];
...
[bgplayer pause];
https://stackoverflow.com/questions/29088158
复制相似问题