469,924 Members | 1,373 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,924 developers. It's quick & easy.

Timer in firefox, opera, et al.

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
Jul 23 '05 #1
2 1504
"Jeremy" <je*****@uci.edu> writes:
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
--
Lasse Reichstein Nielsen - lr*@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
Jul 23 '05 #2
JRS: In article <lL1gc.9178$yD1.28188@attbi_s54>, seen in
news:comp.lang.javascript, Jeremy <je*****@uci.edu> posted at Sat, 17
Apr 2004 03:45:21 :
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.

--
© John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 IE 4 ©
<URL:http://jibbering.com/faq/> Jim Ley's FAQ for news:comp.lang.javascript
<URL:http://www.merlyn.demon.co.uk/js-index.htm> jscr times, dates, sources.
<URL:http://www.merlyn.demon.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.
Jul 23 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

15 posts views Thread by 50295 | last post: by
2 posts views Thread by André Wagner | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.