SKScene 中的 AVAudio 播放器出错
Posted
技术标签:
【中文标题】SKScene 中的 AVAudio 播放器出错【英文标题】:Error with AVAudio Player in an SKScene 【发布时间】:2014-04-30 23:11:54 【问题描述】:我正在尝试使用AVAudioPlayer
在我的游戏中制作背景音乐,所以我将此代码设置为SKScene
的initWithSize
方法:
//SETTING BACKGROUND MUSIC//
NSError * err = nil;
NSURL * musicFile = [[NSBundle mainBundle] URLForResource:@"Cosmic Rush" withExtension:@"m4a"];
music = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:&err];
if(err)
NSLog(@"%@", [err userInfo]);
return;
[music prepareToPlay];
music.numberOfLoops = -1;
[music setVolume:0.5];
//SETTING BACKGROUND MUSIC//
然后,用另一种方法:[music play];
但是,声音永远不会播放,我尝试了各种扩展:.mp3
、.caf
、.mp4
等。我还检查了有相同的人问题,但没有一个解决他们问题的解决方案适用于我的。
【问题讨论】:
您是否使用 NSLog 记录了任何错误?你试过设置断点吗? 几个问题:您的音频文件的确切名称是什么(在您的项目中出现)?您是否尝试过在音频文件名中没有空格?你试过 URLForResource:@"SongName.mp3" withExtension:nil];而不是您当前拥有的(将 mp3 修改为实际格式)?您是否设置了 AVAudioPlayer 委托?你能播放其他音频文件还是不能播放这个? 好的,我试过文件名中没有空格,扩展名为 mp3,现在 NSLog 框中出现错误,但里面什么都没有。但我还没有设置 AVAudioPlayer 委托。我该怎么做? 考虑将代码中名为 music 的 ivar 设置为具有强引用的属性。有关更多信息,请参阅此 SO 帖子 ->link 尝试记录这个:NSLog(@"Error occurred: %@", [err localDescription]); 【参考方案1】:有一种更简单的方法可以将背景音乐添加到您的场景中。我使用以下步骤,效果与任何其他方法一样好,而且更容易。
在场景顶部导入@import AVFoundation;
。
将其作为属性添加到您的 @implementation
之后。
AVAudioPlayer *_backgroundMusicPlayer;
然后为音乐声明一个方法
- (void)playBackgroundMusic:(NSString *)filename
NSError *error;
NSURL *backgroundMusicURL =
[[NSBundle mainBundle] URLForResource:filename
withExtension:nil];
_backgroundMusicPlayer =
[[AVAudioPlayer alloc]
initWithContentsOfURL:backgroundMusicURL error:&error];
_backgroundMusicPlayer.numberOfLoops = -1;
[_backgroundMusicPlayer prepareToPlay];
[_backgroundMusicPlayer play];
之后,在您的 -(id)initWithSize:(CGSize)size
中创建对该方法的引用,如下所示
[self playBackgroundMusic:@"bgMusic.mp3"];
它应该为你处理背景音乐。
【讨论】:
感谢您的回答,但我发现问题与引用我的音频文件有关。它位于错误的位置。以上是关于SKScene 中的 AVAudio 播放器出错的主要内容,如果未能解决你的问题,请参考以下文章
iPhone App:不恢复 AVAudio Player 中的音频会话
在 ViewController 中播放时从 SKScene 静音 AVAudioPlayer
SKScene 在 presentViewController 之后重复