Timer in firefox, opera, et al.

J

Jeremy

Hello,
I'm using the setTimeout function to perform some animation. The timeout
I'm using is 30ms, which works well in IE and produces smooth animation.
However, in other, more standards compliant browsers, it plays back much
slower. It seems like this happens to the same degree on all of these
browsers, and if I increase or decrease the timeout by a little bit it
doesn't have any effect. This leads me to believe that there is some
minimum timeout for this function in the standards (are there any
standards?) but I can't find any info on this.

If I increase the timeout and increase the "jump" of the animation, it works
at the correct rate but looks like crap. Any way to get the other browsers
to give me 30ms precision?

Thanks,
-Jeremy
 
L

Lasse Reichstein Nielsen

Jeremy said:
This leads me to believe that there is some minimum timeout for this
function in the standards (are there any standards?)

There are no standards. There is a, browser and OS dependent, minimum
delay, the timer granularity. However, in IE 6, Moz FF and Opera 7,
that seems to be 10ms (as witnessed by this program:)
---
var t1;
var times = [];
var n=0;
function timer() {
var t2 = new Date();
times.push(t2-t1);
t1=t2;
if (--n>0) {
setTimeout(timer,1);
}
}

function report() {
alert(times);
}
setTimeout(report,1000);
n=5;
t1=new Date();
setTimeout(timer,1);
---

If the delay between rounds is more than that, maybe it is the time it
takes to update the animation that counts against you. If you call the
setTimeout again at the end of each step, you will be delayed by the
time it takes to do the step.
If I increase the timeout and increase the "jump" of the animation, it works
at the correct rate but looks like crap. Any way to get the other browsers
to give me 30ms precision?

I would use setInterval(step,30) and hope the steps take less than 30
ms. It won't be exact, but it should be close enough.

/L
 
D

Dr John Stockton

JRS: In article <lL1gc.9178$yD1.28188@attbi_s54>, seen in
I'm using the setTimeout function to perform some animation. The timeout
I'm using is 30ms, which works well in IE and produces smooth animation.
However, in other, more standards compliant browsers, it plays back much
slower. It seems like this happens to the same degree on all of these
browsers, and if I increase or decrease the timeout by a little bit it
doesn't have any effect. This leads me to believe that there is some
minimum timeout for this function in the standards (are there any
standards?) but I can't find any info on this.

If I increase the timeout and increase the "jump" of the animation, it works
at the correct rate but looks like crap. Any way to get the other browsers
to give me 30ms precision?

You could have consulted the newsgroup FAQ on the subject of time; see
sig below.

The resolution of the date object itself is by definition one
millisecond; but the values of new Date() increase in steps of 10 ms for
WinNT+ systems or 55 ms for Win98x systems (and possibly other values
for other systems).

<URL:http://www.merlyn.demon.co.uk/js-dates.htm#OV> refers; and will
show the resolution of the browser being used.

The same timing mechanism is (extremely likely to be) used for the
setTimeout function, and for setInterval too.

I expect the resolution to be an OS property, otherwise independent of
browser version.


For use on a 55 ms system, you could in principle write a time-wasting
loop, see how many times it could be executed between successive 55 ms
timeouts, similarly time your display routine, then use that information
to attempt a hand-crafted 27.5 ms interval between a timed display call
and a fill-in one. It seems a dubious approach, but there may be no
better.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,763
Messages
2,569,562
Members
45,038
Latest member
OrderProperKetocapsules

Latest Threads

Top