2011-07-09 12 views
9

IBActionで音を再生するには、UIbuttonを一度押して、AVAudioPlayerを使用してボタンをもう一度押して一時停止しますか?また、サウンドが再生されているときと再生されていないときの状態を変更したいと思っています(UIButton)。同じボタンで再生/一時停止する[AVAudioPlayer]

はここに私のコードです:

- (IBAction)Beat 
{ 
    if ([Media2 isPlaying]) 
    { 
     [Media2 pause]; 
     [Button17 setSelected:NO]; 
    } 

    else 
    { 
     Path = [[NSBundle mainBundle] pathForResource:@"Beat" ofType:@"mp3"]; 
     AVAudioPlayer *Media2 = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:Path] error:NULL]; 
     [Media2 setDelegate:self]; 
     [Media2 play]; 
     [Button17 setSelected:YES]; 
    } 
} 

答えて

13

ここでは、BOOL変数を使用する単純な方法です。

playing = NOviewDidLoadに設定します。

-(void)PlayStop{  
    if (playing==NO) { 
     // Init audio with playback capability 
     [play setBackgroundImage:[UIImage imageNamed:@"hmpause.png"] forState:UIControlStateNormal]; 

     AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
     [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil]; 

     audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:______ error:&err]; 
     [audioPlayer prepareToPlay]; 

     audioPlayer.delegate=self; 
     [audioPlayer play]; 

     playing=YES; 
    } 
    else if(playing==YES){ 
     [play setBackgroundImage:[UIImage imageNamed:@"Audioplay.png"] forState:UIControlStateNormal]; 

     [audioPlayer pause]; 

     playing=NO; 
    } 
} 
3

は、以下の方法を使用してプレーする準備ができてあなたのaudioPlayerインスタンスを保管してください。

/* 
Prepares the audio file to play. 
*/ 
-(void) initWithAudioPath:(NSString *) audioPath { 
    // Converts the sound's file path to an NSURL object 
    NSURL *audioPathURL = [[NSURL alloc] initFileURLWithPath:audioPath]; 

    self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioPathURL error:nil]; 
    audioPlayer.delegate = self; 

    [audioPlayer prepareToPlay]; 

    [audioPathURL release]; 
} 

-(void) pausePlaybackForPlayer:(AVAudioPlayer *) player { 
    [player pause]; 
} 

-(void) startPlaybackForPlayer:(AVAudioPlayer *) player { 
    if (![player play]) { 
     NSLog(@"Could not play %@\n", player.url); 
    } 
} 

- (IBAction)Beat { 
    if (audioPlayer.playing == NO) { 
     // Audio player is not playing. 
     // Set the button title here to "stop"... 
     [self startPlaybackForPlayer:audioPlayer]; 
    }else { 
     // Audio player is playing. 
     // Set the button title here to "play"... 
     [self pausePlaybackForPlayer:audioPlayer]; 
    } 

} 
関連する問題