[英]Playing music from a SKAction
我正在尝试将背景音乐添加到我的游戏中。 我有一个将音乐静音的开关,当您再次点击它时,它将播放音乐。 这是播放音乐的代码
var backgroundMusic = SKAction.playSoundFileNamed("Background.wav", waitForCompletion: true)
runAction(SKAction.repeatActionForever(backgroundMusic), withKey: "music")
我知道应将waitForCompletion设置为false,以在您点击开关时停止音乐。 但是,当我将其设置为false时,音乐就不会播放,就像静态声音一样。
self.removeActionForKey("music")
那就是我用来停止音乐的代码。 我想知道您是否可以将音乐静音直到曲目结束,还是在SpriteKit中有另一种永久播放音乐的方法。
waitForCompletion
:如果为true
,则此action
的持续时间与音频播放的长度相同。 如果为false
,则认为该action
已立即完成。
将waitForCompletion
设置为false
将会创建一个持续时间为0
的动作。 因此,永远重复动作将无法正常运行。
您必须等待播放的持续时间,然后才能从头开始再次播放音乐。 因此,将waitForCompletion
设置为true
,
var backgroundMusic = SKAction.playSoundFileNamed("Background.wav", waitForCompletion: true)
您可以使用removeActionForKey
停止音乐。
我建议使用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];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.