私のゲームには 3 つの BGM があります。ipod の音楽が再生されているときに、ゲームでバックグラウンド ミュージックをオフに設定したいと思います。それ以外の場合は、最後に再生された音楽が再生されます。muser が iPod の音楽をオンにして音楽を変更すると、iPod の音楽が消えてバックグラウンド ミュージックが再生されます。問題は、これを2 回目にしようとすると (音楽を iPod からゲーム内に変更する)、最初の曲は再生されますが、他の 2 曲は再生されないことです。
これはばかげた振る舞いであり、問題を解決しようとしてもうまくいきません。これが私の現在のコードです....
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 を使用します。
助けてくれてありがとう。