2012-03-22 41 views
0

このソースプログラムを作成しました。しかし、私は audioPlayerDidFinishPlaying:メソッドと呼ぶことはできません。 サウンドを再生した後、数秒後に "exc_bad_access"エラーでクラッシュします。audioPlayerDidFinishPlayingを呼び出すにはどうすればよいですか:

.hファイル

#import <UIKit/UIKit.h> 
#import <AVFoundation/AVFoundation.h> 

@interface SecondViewController : UIViewController< 
AVAudioPlayerDelegate>{ 
    AVAudioPlayer *aPlayer; 
} 
@end 

.mファイル

-(void)playSound{ 

NSString *soundName = @"red"; 
NSError *error = nil; 
NSURL *soundUrl = [[NSBundle mainBundle] URLForResource:soundName withExtension:@"mp3"]; 
aPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:&error]; 

if (error != nil) { 
    NSLog(@"audio_player initialized error :(%@)",[error localizedDescription]); 
    [aPlayer release]; 
    error=nil; 
    return; 
} 

NSLog(@"player Ok!"); 
aPlayer.delegate = self; 
[aPlayer prepareToPlay]; 
aPlayer.volume=1.0f; 

[aPlayer play]; 

} 
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{ 
[player release]; 
} 

答えて

0

これは完璧に動作している私が使用するものです、それはあなたを助ける必要があります。

-(void)playSound{ 

    NSString *name = [[NSString alloc] initWithFormat:@"red"]; 
    NSString *source = [[NSBundle mainBundle] pathForResource:name ofType:@"mp3"]; 
    if (data) { 
     [data stop]; 
     data = nil; 
    } 
    data=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath: source] error:NULL]; 
    data.delegate = self; 
    [data play]; 
} 
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)data successfully:(BOOL)flag{ 
    NSLog(@"my log"); 
    [data release]; 
} 
+0

...あなたがあなたのAVAudioPlayerを "aPlayer"として宣言してから、あなたのaudioPlayerDidFinishPlayingメソッドで "player"と呼ばれたために間違っていました。 –

関連する問題