こんにちは私はUINavigationControllerを使用するHomeViewControllerというUIViewを持っています。音のものを扱う//ビューが表示される前にAVAudioPlayerが再生されないようにする方法
:GameViewControllerさんのviewDidLoadで
gameView = [[GameViewControler alloc] init];
[[self navigationController] pushViewController:gameView animated:YES];
[gameView release];
、私は別の後に2つのオーディオファイル1を再生するには、次のコードを使用します。ボタンをクリックするだけで、私は次のコードを使用して別のビューをプッシュ
if([[GameStore defaultStore] currentIndex] == 0)
{
if(![audioPlayer isPlaying])
{
NSString *findPath = [[NSBundle mainBundle] pathForResource:@"findtheword" ofType:@"aiff"];
if(findPath)
{
NSURL *findURL = [NSURL fileURLWithPath:findPath];
NSError *findError;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:findURL error:&findError];
if(audioPlayer == nil)
{
NSLog([findError description]);
}
else{
[audioPlayer play];
}
}
}
}
while ([audioPlayer isPlaying]) {
//do nothing and wait so the sound is not overlap
}
if(![audioPlayer isPlaying] || ([audioPlayer isPlaying] && override)){
Word *currentWord = [[GameStore defaultStore] currentWord];
NSString *soundPath = [[NSBundle mainBundle] pathForResource:[currentWord fileName]
ofType:[currentWord fileType]];
// If this file is actually in the bundle...
if (soundPath) {
// Create a file URL with this path
NSURL *soundURL = [NSURL fileURLWithPath:soundPath];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:&error];
if (audioPlayer == nil)
NSLog([error description]);
else
[audioPlayer play];
}
[FlurryAnalytics logEvent:@"GameViewController - playSound"];
}
else{
[FlurryAnalytics logEvent:@"GameViewController - playSound is still playing"];
}
最初のオーディオファイルが画面は、それがGameViewControllerののviewDidLoadから呼び出されているにもかかわらず、HomeViewControllerに残っている間に再生するために始めた理由私は理解することはできません。
私は次のコードを削除する場合:
while ([audioPlayer isPlaying]) {
//do nothing and wait so the sound is not overlap
}
を最初のオーディオファイルがGameViewControllerがロードされたときに再生するために始めたが、第二のオーディオファイルのオーバーラップ。
ありがとうございました。
何が起こっていたのか正確に記載されています。私はコードを-viewDidAppearに移動しました。それは問題を解決するようです。 – atbebtg