如何检查Audioplayer的播放时间增加2秒

时间:2013-03-02 20:55:48

标签: objective-c xcode ios6 avaudioplayer nstimer

我试图写一个循环来检查每当音频player.currenttime增加2秒然后它应该执行更新视图方法

- (void)myTimerMethod{

 NSLog(@"myTimerMethod is Called");

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

  }


- (void)checkPlaybackTime:(NSTimer *)theTimer
  {
    float seconds =  audioplayer.currenttime;

    NSLog(@"Cur: %f",audioPlayer.currentTime ); 

    if (seconds = seconds + 2){

    [self update view];
}

 - (void)UpdateView{



if  (index < [textArray count])
 {
     self.textView.text = [self.textArray objectAtIndex:index];
   self.imageView.image = [self.imagesArray objectAtIndex:index];
   index++;
}else{

    index = 0;


   }
 }

如果音频player.currenttimer增加2秒,那么写入的正确方法是什么呢?

当前时间的NSLog始终显示0.00。这是为什么。随着音频播放器的播放,它应该会增加。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

首先,尝试在NSLog中使用浮动“秒”而不是当前时间。

NSLog(@"Cur: %f", seconds); 

当前时间不是浮点数,它是一个NSTimer对象,所以你必须在你的NSLog文本中使用%@所以

NSLog(@"Cur: %@",audioPlayer.currentTime ); 

应该也可以。

假设您的audioPlayer设置正确,如果您正在寻找定时器为2秒时,您的if语句将

if(seconds == 2){
    [self update view];
}

如果您每次定时器都会找到偶数,即2,4,6等等,那么您的if语句将是

if(seconds % 2 == 0){
    [self update view];
}

if语句中的%是模数符号:http://www.cprogramming.com/tutorial/modulus.html

此外,您当前的if语句是分配而不是检查seconds变量。要检查它,您需要==不=。但是,你当前的if语句永远不会是真的,因为你自己检查变量+ 2.换句话说,如果秒等于2,你的if语句会询问2 ==(2 + 2)或者是否它是4,它询问2 ==(4 + 2)。此声明无法验证为真。

希望这有帮助!

答案 1 :(得分:1)

我从你给出的解释中理解你想要增加像这样的时间间隔

Timer calls after 0.55
Timer calls after 0.60
Timer calls after 0.65
Timer calls after 0.70

&安培;等等。

如果这是你想要做的。然后我认为你可以这样做,通过改变重复:YES重复:否,以便计时器不重复,然后在onTimer,只需启动一个更长的间隔的新计时器。

你需要一个变量来保持你的间隔,这样你每次通过onTimer都可以让它变长一点。

此外,您可能不再需要保留计时器,因为它只会触发一次,当它发生时,您将获得一个新的计时器。

float gap = 0.50;

[NSTimer scheduledTimerWithTimeInterval:gap target:self selector:@selector(onTimer) userInfo:nil repeats:NO];

-(void) onTimer {
gap = gap + .05;
[NSTimer scheduledTimerWithTimeInterval:gap target:self selector:@selector(onTimer) userInfo:nil repeats:NO];
}

希望这有助于你