我的游戏有 3 首背景歌曲。我希望游戏在播放 ipod 音乐时将背景音乐设置为关闭,否则它将播放最后播放的音乐。当muser打开ipod音乐改变音乐时,ipod音乐应该消失并且背景音乐播放。问题是,我第二次尝试这样做(将音乐从 ipod 更改为游戏内)第一首歌曲会播放,但其他两首不会。
这是愚蠢的行为,它不会以任何我试图解决问题的方式起作用。这是我当前的代码....
在 drawRect 循环中:
//Music toggle
if(music_active == 0){
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategorySoloAmbient error:NULL];
[[AVAudioSession sharedInstance] setActive:YES error:NULL];
[background_music play];
music_active++;
}else if(music_active == 1){
[background_music pause];
[background_musicB play];
music_active++;
}else if(music_active == 2){
[background_musicB pause];
[background_musicC play];
music_active++;
}else{
[background_musicC pause];
music_active = 0;
}
在 startAnimation 方法中:
UInt32 size,result;
size = sizeof(result);
AudioSessionGetProperty(kAudioSessionProperty_OtherAudioIsPlaying,&size,&result);
if(!result){
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategorySoloAmbient error:NULL];
[[AVAudioSession sharedInstance] setActive:YES error:NULL];
[background_music prepareToPlay];
[background_musicB prepareToPlay];
[background_musicC prepareToPlay];
if(music_active == 1){
[background_music play];
}else if(music_active == 2){
[background_musicB play];
}else if(music_active == 3){
[background_musicC play];
}
}else{
music_active = 0;
}
在 stopAnimation 方法中:
[background_music stop];
[background_musicB stop];
[background_musicC stop];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:NULL];
[ [AVAudioSession sharedInstance] setActive:NO error:NULL];
在 initWithCoder 方法中:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategorySoloAmbient error:NULL];
此方法还加载声音文件并将循环数设置为 -1。当然,它使用 AVAudioPlayer。
感谢您的任何帮助。