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);

フロートキャストの1つも失う可能性がありますが、そのままにしておく方が安全で読みやすくなると思います。ただし、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 に答える