0

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

该应用程序将 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 秒后首先被调用,但每次调用该方法时都会更新。

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

4

1 回答 1

0

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

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

于 2010-04-23T02:04:03.883 回答