2012-03-01 17 views
4

これは現在の再生時間をAVAudioPlayer'sで確認する正しい方法ですか?avaudioplayerの現在の再生時間を確認してください

[audioPlayer play]; 

float seconds = audioPlayer.currentTime; 

float seconds = CMTimeGetSeconds(duration); 

CURRENTTIMEが、その後11秒

[self performSelector:@selector(firstview) withObject:nil]; 

とfirstview後に等しいとき

[audioPlayer play]; 

CURRENTTIMEが23秒

[self performSelector:@selector(secondview) withObject:nil]; 
に等しいときことをした後、私は、コードすることができますどのように

Thあなたの答えを求めます。

+0

時間をチェックするパラレルタイマーをスケジュールします。 'currentTime'はNSTimeInterval変数を返します。したがって、' double seconds = audioPlayer.currentTime; 'は正しいものです。 – 0xDE4E15B

答えて

7

定期的に時刻を確認するようにNSTimerを設定することができます。毎秒(または任意の間隔あなたが好き)、このメソッドを呼び出すためにNSTimerオブジェクトを設定すると

- (void) checkPlaybackTime:(NSTimer *)theTimer 
{ 
    float seconds = audioPlayer.currentTime; 
    if (seconds => 10.5 && seconds < 11.5) { 
    // do something 
    } else if (seconds >= 22.5 && seconds < 23.5) { 
    // do something else 
    } 
} 

:あなたはのような方法が必要になる

NSTimer *myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 
    target:self 
    selector:@selector(checkPlaybackTime:) 
    userInfo:nil 
    repeats:YES]; 

詳細はNSTimerのマニュアルを参照してください。

https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSTimer_Class/Reference/NSTimer.html

EDIT:あなたはそれで通過している適切なタイミングでタイマーを停止(無効)しないといけないsecondsはおそらく正確に11または23ではありません。細かいことをしなければならないでしょう。

+0

私は1秒の境界フェンスが好きではありません。彼らは信頼できないようです。 'if(seconds => 11){.. performSelector:と言うだけで、既に起こっていることを示すフラグを設定します。 } ' – bobobobo

関連する問題