每当我展示我的场景时,我都想开始播放音乐文件并停止播放上次展示我的场景时的音乐。我正在尝试这样做。
[self removeActionForKey:@"Music"];
[self runAction:[SKAction repeatActionForever:[SKAction playSoundFileNamed:@"Music.wav" waitForCompletion:YES]] withKey:@"Music"];
我应该使用 AVAudioPlayer
还是 [SKAction playSoundFileNamed:]
?
另外我想知道有没有一种方法可以在所有场景下一直播放音乐文件而不用从头开始。
最佳答案
要在所有场景中播放背景音乐,我会推荐AVAudioPlayer
。您可以在 AppDelegate
的某处编写代码以从所有场景访问。这是使用 AVAudioPlayer
// AVAudioPlayer *bgMusicLoop;
- (void)playBackroundMusic:(NSString *)fileName withExtenstion:(NSString *)fileExtension
{
NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:fileExtension];
NSError *error;
if(bgMusicLoop)
[bgMusicLoop stop];
bgMusicLoop = nil;
bgMusicLoop = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:filePath] error:&error];
if (error) {
NSLog(@"Error in audioPlayer: %@", [error localizedDescription]);
} else {
bgMusicLoop.numberOfLoops = -1;
[bgMusicLoop prepareToPlay];
[bgMusicLoop play];
}
}
- (void)stopBackgroundMusic
{
if(bgMusicLoop)
[bgMusicLoop stop];
bgMusicLoop = nil;
}
- (void)pauseBackgroundMusic
{
if(bgMusicLoop && bgMusicLoop.isPlaying)
[bgMusicLoop pause];
}
- (void)resumeBackgroundMusic
{
if(bgMusicLoop && !bgMusicLoop.isPlaying)
[bgMusicLoop play];
}
关于ios - Sprite Kit 停止播放音乐文件并从头开始播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30568097/