Processing.js Timer
Solution 1:
If you want accuracy, take a look into high resolution timers. However, this feature isn't available on all browsers.
Also, Processing.js has a built-in read only variable named frameCount. You can query that instead of counting the frames yourself.
Solution 2:
You can store the start time at a variable.
Then create a new timer whenever you want and subtract the start time variable from it.. The result will be the difference in milliseconds..
You can also use the actual time divided by the frames counter to get an accurate average frame-rate of your application..
something like
var startTimer = newDate(); // at start (once)
and whenever you want to check
var passed = newDate() - startTimer; // in milliseconds
Demo at http://jsfiddle.net/gaby/CF4Ju/
Solution 3:
I made up this class for a Game. It uses millis()
and is independent of frameRate
classTimer{
boolean increment, inProgress;
int spawn, end;
int seconds, tm_limit;
Timer(int tm_limit){
this.tm_limit = tm_limit;
seconds = tm_limit;
increment = false;
inProgress = false;
}
Timer(){
seconds = 0;
increment = true;
inProgress = false;
}
voidstart(){
inProgress = true;
spawn = millis();
}
voidstop(){
inProgress = false;
end = millis();
}
intgetSeconds(){
if(inProgress){
if(increment){
seconds = int((millis() - spawn) / 1000);
}
else{
if(seconds - int((millis() - spawn) / 1000) != seconds){
seconds = seconds - int((millis() - spawn) / 1000);
if(seconds <= 0) { stop(); }
else spawn = millis();
}
}
}
return seconds;
}
voidreset(){
if(!increment)
seconds = tm_limit;
else
seconds = 0;
inProgress = false;
}
}
If a Timer object is instantiated with a parameter, it is assumed that Timer should decrease. Otherwise, the exit condition can be checked by getting the value from getSeconds()
method.
Post a Comment for "Processing.js Timer"