2010-04-23 37 views
0

我有一個音頻播放器,我想要顯示播放的當前時間。我正在使用自定義遊戲課程。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秒,但隨後各方法被調用時更新。

一如既往,評論和指針讚賞。

回答

0

UserInfo是一個void *,所以你可以直接傳遞一個int的百分比,或者只是一個指向你的NSNumber對象的指針;它不一定是一個NSDictionary。除此之外,使用字典是一種標準方法,並且沒有過多的開銷。

請注意,您每次調用此方法時都會重複創建5秒的新計時器,這可能是您的意圖,也可能不是您的意圖。當您創建重複計時器(或普通計時器)時,您應確保在不需要時使其失效。

+0

謝謝你的回答保羅。 – 2010-04-28 13:52:55