Napisałem kiedyż tam dosyć ciekawą klasę w JS , może komuż przyda się w grze do animacji różnych elementów. Starałem się emulować wątki (oczywiżcie w JS pełna emulacja jest niemożliwa) wyszło jak wyszło 
Kod:
<script>
Object.prototype.$ = function(v){
return document.getElementById(v);
}
MyInterval = function (f, t){
this.func = f
this.time = t;
this.handler;
this.start = function() {
this.handler = setInterval(this.func, this.time);
}
this.repeat = function(h) {
h.handler = setInterval(h.func, h.time);
}
this.sleep = function(time) {
this.stop();
setTimeout(this.repeat, time, this);
}
this.stop = function() {
clearInterval(this.handler);
}
}
</script>
watek :
<div id="watek1"></div>
watek 2:
<div id="watek2"></div>
watek 3:
<div id="watek3"></div>
<script>
var i = 0;
animacja = function() {
i+=2;
$('watek1').style.marginLeft = i+'px';
$('watek1').innerHTML = i;
if(i == 26) {watek.sleep(3000)};
if(i == 60) {watek.sleep(3000)};
if(i == 70) {watek.stop()};
}
var j = 0;
animacja2 = function() {
j+=2;
$('watek2').style.marginLeft = j+'px';
$('watek2').innerHTML = j;
if(j == 30) {watek2.sleep(2000)};
if(j == 74) {watek2.sleep(2000)};
if(j == 100) {watek2.stop()};
}
var k = 0;
animacja3 = function() {
k+=2;
$('watek3').style.marginLeft = k+'px';
$('watek3').innerHTML = k;
if(k == 34) {watek3.sleep(1500)};
if(k == 64) {watek3.stop()};
}
watek = new MyInterval(animacja, 500);
watek.start();
watek2 = new MyInterval(animacja2, 450);
watek2.start();
watek3 = new MyInterval(animacja3, 400);
watek3.start();
</script>
Nie należy wpisywać w konstruktorze tych samych wartożci. Wydaje mi się, że to po prostu bład w JS. Po prostu wpisujcie przeskoki o bezpieczne 50 wtedy wszystko jest OK.
Zakładki