Newsgroup: it.comp.lang.javascript
Titolo: Mettere in pausa

Qualcuno sa dirmi se c'è una funzione, qualcosa tipo "suspend()" che
permette di mettere in pausa uno script per un numero di secondi
specificato?
Grazie
--
Dimux
http://www.128byte.com
Scopri gli errori e i segreti dei tuoi film, album e programmi preferiti!

 Grazie
Prego

 specificato?
No, non esiste niente del genere.
L'unica cosa che puoi fare e' temporizzare determinati pezzi di codice 
spezzandoli in funzioni, usando un timeout.
Ad esempio:
<script>
	function anotherFun(){
		/* il tuo codice */
	}	
	function delayedFun(){
		/* il tuo codice */
 
		/* aspetta 3 secondi e poi esegui anotherFun() */
		setTimeout("anotherFun()",3000);
	}
	/*codice pricipale*/
	/* aspetta 5 secondi e poi esegui delayedFun() */
	setTimeout("delayedFun()",5000);
</script>
E' un po' macchinoso, ma solitamente non c'e' bisogno di una pratica del 
genere in applicazioni Javascript.
Se s'incappa in qualcosa di questo tipo, e' probabile che vi sia stata 
un'analisi del problema errata, nella maggior parte dei casi e' 
possibile trovare strade alternative.
-- 
C'ya,
ZER0
  :. job profile - coder.gfxer.webDesigner
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)


Grazie del suggerimento, in effetti č quello che avevo pensato di fare, mi
serviva per far scorrere un'immagine verso destra:
avevo pensato di fare un ciclo di questo tipo:
for (var i=0; i<100; i++){
    document.getElementById("immagine").style.left=i+"px";
}
ma cosě facendo non vedo l'immagine scorrere, bensě viene piazzata subito
nella posizione dove si troverebbe all'ultimo passaggio del ciclo!!
Hai qualche suggerimento?
Grazie!!


 nella posizione dove si troverebbe all'ultimo passaggio del ciclo!!
Aaah.. ma allora il tuo e' un problema del tutto diverso. :) Il "suspend
()" o cmq il "mettere in pausa" non c'entra niente qui. :)
Il tuo "problema" deriva dall'interazione tra il codice e il motore di 
rendering del browser.
In pratica, durante un ciclo in js il browser non viene interpellato per 
aggiornare la pagina in questione, che viene aggiornata solo alla fine 
del suddetto ciclo.
Per realizzare animazioni, devi usare gli intervalli o i timeout. Ad 
esempio:
var myDHTMLobject=null;
function anim(x){
	if (x<100){
		myDHTMLobject.style.left=x+"px";
		setTimeout("anim("+(++x)+")",100);
	}
}
onload=function(){
	myDHTMLobject=document.getElementById("immagine");
	anim(0);
}
Un esempio scritto on the fly, ma spero ti possa essere d'aiuto.
Ricorda che il secondo parametro del setTimeout, e' il tempo espresso in 
millisecondi dopo quanto eseguire il codice specificato nella stringa 
del primo parametro. Questo significa che piu' il valore e' basso, meno 
attesa ci sara' e quindi l'animazione apparira' piu' fluida.. ma 
attento! I setTimeout/setInterval non sono thread, quindi piu' i valori 
sono bassi, piu' "appesantisci" l'esecuzione di tutto il codice della 
pagina.. e la pagina diventa soggetta anche al tipo di computer usato 
per visualizzarla.. ad esempio, potrebbe vistosamente "scattare" su un 
233, se usi 3 setTimeout che aggiornano la oggetti della pagina con 
valori medio/bassi.
Quindi cerca sempre di trovare un valore soddisfacente, ma non troppo 
basso.. fai un po' di prove, in caso.


 rendering del browser.
Grazie della celerità della risposta, che è stata anche molto esaustiva :)
Ti offro un caffè virtuale :PP


 Ti offro un caffè virtuale :PP
Mhmm.. di che zona sei? Sto facendo "collezione di offerte di caffe'" :P
(in quanto ancora, non ne ho "riscossa" alcuna :D )
