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

4

1 回答 1

2

你的意思是lastTimeCheck和lastTimeCheck + timePeriod之间的时间吗?那将是

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

您也可能会丢失其中一个浮点类型转换,但我认为将它们留在其中更安全且可读性不差。但是,如果您需要保证 p 小于或等于 1,则应该保存并重新使用上一次调用中的 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;
于 2011-05-02T11:35:46.670 回答