2011-05-02 2 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.9-0.5에서 결과를 얻을, 그 시간 간격의 비율을 얻을 수 있지만, 나는 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 네 말이 맞아. –