我试图获得时间过去的百分比,我所做的是先检查一个时间间隔,他们我想得到该时间间隔内经过时间的百分比,如果这是有意义的
这是我的代码:
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
答案 0 :(得分: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;