NSTimer可以平滑播放位置

时间:2010-04-23 01:53:09

标签: iphone nsdictionary nstimer

我有一个音频播放器,我想显示播放的当前时间。我正在使用自定义游戏类。

应用程序将mp3下载到文件中,然后在下载5%时从文件中播放。我有一个进度视图更新,因为文件播放并在每次调用进度视图时更新标签。然而,这是生涩的...有时甚至倒退一两个数字。

我正在考虑使用NSTimer来解决问题。我会每秒被解雇一个方法并将百分比播放的数字传递给方法然后更新标签。

首先,这看起来合情合理吗?

其次,如何将百分比(浮点数)传递给计时器的目标。现在我把百分比放到字典中,但这似乎不是最佳的。

这就是所谓的更新进度条:

-(void)updateAudioProgress:(Percentage)percent {
    audio = percent;
    if (!seekChanging) slider.value = percent;

    NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init];  

    [myDictionary setValue:[NSNumber numberWithFloat:percent] forKey:@"myPercent"];


    [NSTimer scheduledTimerWithTimeInterval:5
                                     target:self 
                                   selector:@selector(myTimerMethod:) 
                                   userInfo:myDictionary 
                                    repeats:YES];
    [myDictionary release];
}

这在5秒后首先调用,但每次调用该方法时都会更新。

与往常一样,评论和指示赞赏。

1 个答案:

答案 0 :(得分:0)

UserInfo是一个void *,所以你可以直接传递一个int百分比,或只是一个指向NSNumber对象的指针;它不一定是NSDictionary。除此之外,使用字典是一种标准方法,并且没有过多的开销。

请注意,每次调用此方法时,您都会创建一个重复5秒的新计时器,这可能是您的意图,也可能不是。当您创建重复计时器(或正常计时器)时,应确保在不需要时使其无效。