2012-01-02 10 views
1

は、私の以前のコードでは、上記のコードの一時停止ボタンでAVAudioPlayer - 一時停止ボタン

- (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]; 

} 

が起こっている理由を任意のアイデア。助けていただければ幸いです。

ありがとうございます。

答えて

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]; 

} 
+0

ビンゴ.. + 1 ..お楽しみコーディング.. :) –

関連する問題