AVAudioPlayer - 暂停按钮

时间:2012-01-02 21:40:04

标签: iphone

我之前的代码是

- (void) playaudio: (id) sender
{
   NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Theme" 
                                                 ofType:@"mp3"];   
   NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:filePath];   

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

   self.audioPlayer.currentTime = 0;
   [self.audioPlayer play];
}

- (void)pause: (id)sender

{
   [audioPlayer pause]; 

}

- (void)stop: (id)sender

{

  [audioPlayer stop];

 }

在上面的代码中,暂停按钮充当停止按钮,而不是暂停它应该恢复音频文件的位置。

现在我已经在我的代码中添加了简单的语句,它在某种程度上起作用,但仍然达不到我的期望。

现在发生的事情是当您播放音频文件并单击暂停按钮时没有任何反应但是当您单击停止按钮时它会停止播放音频文件然后当您按下暂停按钮时它会从停止按钮的位置恢复音频文件按停止按钮。为什么只按下停止按钮然后暂停按钮功能,但之前没有。我不明白为什么?

为什么会发生这种情况的任何想法

- (void)pause: (id)sender

{

  [audioPlayer pause];    
  [audioPlayer prepareToPlay];
  [audioPlayer play];


}


- (void) stop: (id) sender

{
    [audioPlayer stop];

 }

如果有人有任何想法,为什么会发生这种情况。非常感谢帮助。

提前致谢。

1 个答案:

答案 0 :(得分:4)

每次播放时都不应重新创建音频文件。以下是您可以这样做的方法:

- (void) playaudio: (id) sender
{
   if(self.audioPlayer == nil) {
      NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Theme" 
                                                 ofType:@"mp3"];   
      NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:filePath];   

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

      self.audioPlayer.currentTime = 0; //this could be outside the if if you want it to start over when they hit play
   }
   [self.audioPlayer play];
}

- (void)pause: (id)sender

{
   if([audioPlayer isPlaying]){
       [audioPlayer pause]; 
   } else {
       [audioPlayer play];
   }

}

- (void)stop: (id)sender

{

  [audioPlayer stop];

 }