2011-05-02 72 views
1

我試圖得到時間流逝的百分比,我做的是先檢查一個時間間隔,他們我想獲得在該時間間隔內流逝時間的百分比,如果有道理如何獲得時間流逝百分比?

這是我的代碼:

if (ofGetElapsedTimeMillis() > lastTimeCheck + timePeriod) { 
    lastTimeCheck = ofGetElapsedTimeMillis(); 
    cout << "its time!" << endl; 
} 
float p = (float)ofGetElapsedTimeMillis()/(float)(lastTimeCheck + timePeriod); 
cout << "time percentage: " << p << endl; 

TIMEPERIOD = 3000,所以每3秒我更新lastTimeCheck變量和下面的代碼行獲取在該時間間隔的百分比,我得到的結果爲0.5〜0.9,但我需要p來從0到1

在此先感謝 - rS

回答

2

您是指lastTimeCheck和lastTimeCheck + timePeriod之間的時間間隔?這將是

float p = (float)(ofGetElapsedTimeMililis() - lastTimeCheck)/(float)(timePeriod); 

你或許可以失去浮法之一蒙上太多,但我認爲這是更安全,沒少讀給他們留下。如果你需要保證p小於或等於一,但是,您應該保存並重新使用之前調用的ofGetTimeElapsedMillis值,或者應該在之後明確地檢查p。

int millisNow = ofGetElapsedTimeMillis(); 
int millisSinceLastCheck = millisNow - lastTimeCheck; 
if (millisSinceLastCheck > timePeriod) { 
    lastTimeCheck = millisNow; 
    millisSinceLastCheck = 0; 
    cout << "it's time!" << endl; 
} 
float p = (float)(millisSinceLastcheck)/(float)(timePeriod); 
cout << "time fraction: " << p << endl; 
+0

okkkk你是對的 – 2011-05-02 11:44:20