Newsgroup: it.comp.lang.javascript
Titolo: array e tempo minimo

Quanto è il valore più basso in termini di tempo che si può dare ad un array 
di oggetti immagine? Ad esempio per realizzare un'animazione... 

 di oggetti immagine? Ad esempio per realizzare un'animazione...
Scusa ma che domanda è?
Se creo un array di immagini di 1mb mi servirà 1 minuto per scaricarle, di
1kb 1 secondo; se il server è però intasato? E che linea internet usa il
client?
Una volta caricati: che pc sta usando? E' un vecchio 486 su cui faccio
girare IE6 oppure un quadriprocessore con 1gb di ram dedicato solo alla
navigazione in Internet?
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

 navigazione in Internet?
Lo sto chiedendo perché ho provato a realizzare delle animazioni con 
programmi quali ImageReady o Ulead Gif Animator e mi sono reso conto che il 
tempo di attesa tra un frame e l'altro, chiamato tecnicamente "ritardo del 
fotogramma o delay", è molto più rallentato se tale animazione viene 
convertita in gif e quindi destinata al browser. Al contrario, con il 
medsimo delay se l'animazione viene convertita in file eseguibile i tempi di 
attesa sono rispettati. Da qui mi sono posto il problema che la gif animata, 
essendo destinata al browser, debba avere dei tempi di attesa più lunghi. 
Così adesso mi chiedevo se in programmazione, in particolare in javascript, 
esistono gli stessi limiti, lascia perdere poi il discorso dei tempi del 
download e della velocità di elaborazione del processore che sono un'altra 
cosa... 

 di oggetti immagine? Ad esempio per realizzare un'animazione...
Temo che la domanda non sia chiara.
Generalmente parlando, le animazioni in javascript vengono effettuate
tramite setTimeout/setInterval, il cui intervallo di tempo e' espresso in
millisecondi.
Tali metodi eseguono una funzione allo scadere del tempo impostato
(setTimeout) oppure a intervalli regolari (setInterval).
Va da sč che sebbene tu possa impostare un setInterval di un millisecondo,
se poi la funzione per essere eseguita ce ne impiega cinquanta, avrai
qualche "accavallamento"..
Ovviamente il tempo di esecuzione di una funzione č dato dal codice stesso
della funzione, dal browser su cui gira, dal sistema operativo su cui gira,
dal computer su cui gira, etc.
-- 
ZER0
~ The Tangent Universe collapsed 5974 days, 10 hours, 39 minutes and 25 seconds ago.

 esistono gli stessi limiti
Javascript no; č il motore di rendering del browser che puň essere piů o
meno veloce nel sostituirti un immagine con una precaricata.
-- 
ZER0
~ The Tangent Universe collapsed 5974 days, 10 hours, 43 minutes and 27 seconds ago.

 dal computer su cui gira, etc.
Ok, perň tu leggi il mio secondo post, e ti garantisco che la differenza dei 
tempi č notevole.
In particolare ho un'animazione di 63 fotogrammi, ed ho impostato il delay a 
2 centesimi/s per avere 50 frame in un secondo, dunque l'animazione, senza 
stare a fare troppi calcoli, dovrebbe essere compiuta in 1 secondo e poco 
piů, ed invece ne impiega quasi 6. Questo scarso risultato ovviamente non 
dipende dal computer in uso, né dalla versione del browser che possiedo (tra 
parentesi ho un pc pentium 4, con 1,8GHz e 512RAM) bensě da qualche altro 
fattore. Se infatti la stessa identica animazione la eseguo, all'interno del 
browser, con un filmato flash ecco che in 1 secondo e poco piů la vedo 
tutta, cosě anche se la converto in eseguibile. Da qui mi č sorto il dubbio 
che la tecnologia gif risenta di qualche influenza rallentante, ma non so a 
cosa attribuirlo.

 tempi è notevole.
[CUT]
Dipende dal tempo richiesto al browser per sostituire l'immagine e
rieffettuare il render....
Come ti dicevo nell'altro post: attento a non usare javascript per scopi
per cui non è stato creato. Se quello che stai cercando di fare è ottenere
un risultato stile filmato scordatene, non otterrai mai un video fluido con
la sostituzione dinamica dei singoli frame.
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

 che
E' vero, ho volutamente essere impreciso per lasciare spazio a voi ad una 
risposta più precisa. Credo anche io che dipenda esclusivamente dalla 
conversione in gif, perciò mi domandavo se per accelerare la velocità di 
esecuzione avrei potuto affidarmi a javasript, ed a questo punto credo sia 
possibile :-) 

 la sostituzione dinamica dei singoli frame.
No, no, in realtà ero riuscito a trovare una via di fuga per realizzare quel 
menu in flash che avevo postato, infatti avrei usato dei livelli sia per 
l'animazione in ingresso che per l'animazione in uscita, andando poi a 
coprire il reale menu sottostante con un altro livello gestito in base agli 
eventi che componevano l'intero artifizio, il problema sorto successivamente 
è l'animazione stessa, che ho realizzato come gif animata. Purtroppo è 
questa gif animata che mi sta dando un sacco di grattacapi, perché non vuole 
obbedire ai parametri che le ho impostato riguardo i tempi di attesa tra un 
frame e l'altro. Da qui mi è venuta l'idea di tentare con javascript, per 
accelerare i tempi, e così ho postato questo secondo thread. Adesso voi però 
mi state dicendo che realizzare un'animazione con javascript non porta a 
ottimi risultati, ma dato che non devo fare un cartone animato, ma animare 
semplicemente dei quadrati e cose del genere non credo che venga poi così 
male, che ne pensate?
Anzi, potrei pubblicarla su internet come gif animata così vi rendete conto 
di cosa parlo e poi mi date un parere... ?? 

 tutta, cosě anche se la converto in eseguibile.
Anche questo č irrilevante: quando esegui flash stai utilizzando un plugin,
č come se fosse un programma esterno. Quindi il browser c'entra poco, nella
renderizzazione dell'immagine.
Quindi questo non fa da discriminante, se é un discorso di rendering del
browser o di formato gif.
Premesso ciň, animazioni che pretendono un frame rate stabile, e
relativamente alto, non vanno fatte né utilizzando le gif, né tantomeno
utilizzando swapping di immagini in javascript.
Usa Flash, Shockwave o un Applet Java. Non una gif né uno swap di immagini.
-- 
ZER0
~ The Tangent Universe collapsed 5974 days, 11 hours, 19 minutes and 57 seconds ago.

 dovrebbe andar bene.
Sě, ho provato sia con il visualizzatore di immagini di windows che con 
ImageReady e con Ulead Gif Animator, il risultato č stato questo:
Il visualizzatore me lo visualizza lento, ImageReady pure, Ulead Gif 
Animator invece lo visualizza a velocitŕ corretta dall'interno del programma 
se avvio la riproduzione del filmato, perň č sufficiente che lo visualizzi 
in anteprima e l'animazione č lenta, questo credo che sia dovuto al fatto 
che l'animazione in stato di elaborazione non ha le stesse caratterstiche 
(limitazioni direi...) della relativa conversione in taluni formati, seppure 
abbia riscontrato, come giŕ detto, che convertita in .exe va benissimo.
Comunque adesso posto il link con la famigerata animazione e se ve la 
salvate potete provarla dove meglio ritenete opportuno. Se la aprite 
all'interno di un programma come ImageReady o Ulead Gif Animator vedrete che 
il parametro del "ritardo dei fotogrammi" č impostato correttamente a 0,02 
sec. Ho pubblicato l'animazione completa, di 121 frame, dunque dovrebbe 
impiegarci poco piů di 2 secondi ed invece ne impiega ben 12. Credo che 
javascript possa fare di meglio... :-)
Url:  
http://lordammer.altervista.org/test.htm


Scusate, ho dimeticato di cuttare sopra... 

> immagini.
[CUT]
Flash non posso usarlo perché il committente me lo ha proibito 
tassativamente, shockwave credo stessa minestra dato che richiede anch'esso 
un plugin, e l'applet java non saprei farla (dovrei studiarmi il java). 
Ripeto, non trattasi di una animazione che richiede chissà quale fluidità... 
comunque adesso la potete vedere... 

 impiegarci poco piů di 2 secondi ed invece ne impiega ben 12.
Mah, a me Firefox la esegue nei tempi corretti. Perň, cristo, 580k e rotti
di immagine a casa mi seccava la connessione (ebbene sě, esiste ancora chi
ha un 56k o viaggia con GPRS), meno male ero in ufficio..
L'ho aperta con IE giusto per comparare, ed in effetti rispetto a Firefox
sembra vada alla moviola.
Date queste due cose (dimensioni/comportamenti diversi da browser a
browser), oltre ciň che ti ho detto negli altri post.. ti ripeto: lascia
fuori animazioni gif o javascript, ed usa gli strumenti nati per questo
genere di cose. "The right tool for the right job".
-- 
ZER0
~ The Tangent Universe collapsed 5974 days, 11 hours, 52 minutes and 51 seconds ago.

 genere di cose. "The right tool for the right job".
Voglio fare un tentativo con javascript, dopodiché, se non soddisfatto, 
potrei provare a trovare qualcosa di già pronto in java, ma sei sicuro che 
non dia problemi come javascript?
Comunque grazie per avermi reso l'idea più chiara (e più confusa perciò), 
vedrò il da farsi...

 comunque adesso la potete vedere...
Vista e risposto. Leggi il post relativo.
In aggiunta posso dirti questo: Più o meno (e sottolineo più o meno) lo
stesso effetto potresti ottenerlo anche con un po' di Javascript, CSS e
DOM.
Più o meno ciò che un tempo andava sotto il nome di DHTML.
Un div per fare da contenitore, impostare il bordo bianco esterno e fare
l'effetto di resize verso il basso.
Altri due per visualizzare le linee orizzontali di separazione animate;
Altri tre per contenere le immagini e fare l'effetto di "explode" del
"rettangolo"; più una gif animata di un paio di frame in b/n per dare
l'effetto del "sintonizzarsi", e che andrai a ripetere per le immagini
prima di visualizzare quelle effettive; e poi - ovviamente - le tre
immagini che appariranno nei tre rettangoli alla fine del processo.
Il tutto temporizzato e guidato da javascript tramite timeout/interval.
Cosi' il peso della pagina dovrebbe drasticamente ridursi, soprattutto per
quanto riguarda le immagini.
Va da sé che se non hai mai fatto di queste cose, il tutto ti potrebbe
risultare non banale. Soprattutto devi stare attento ad utilizzare codice
crossbrowser; e rimane sempre la fluidità e velocità che potrebbe non
essere paragonabile a quella che ti aspetti.
-- 
ZER0
~ The Tangent Universe collapsed 5974 days, 12 hours, 12 minutes and 10 seconds ago.

 essere paragonabile a quella che ti aspetti.
Infatti, non sono padrone affatto della materia e mi sembra un po' 
complicato da farsi.

 complicato da farsi.
Già, ma purtroppo è l'unica alternativa possibile; se non puoi usare Flash.
Certo, esistono le applet java, ma se non sai sviluppare questa cosa in
DHTML, temo che avrai i medesimi problemi nello scrivere codice java..
senza dimenticare che le applet non sono proprio leggere, e che esistono
diverse versioni di Virtual Machine, che la M$ ne ha fatto il supporto a
singhiozzi (e una versione di Winzoz le supporta, e quella no, e
quell'altra si.. etc).
-- 
ZER0
~ The Tangent Universe collapsed 5975 days, 3 hours, 42 minutes and 35 seconds ago.

 se lo installa sa che rischia download enormi.
C'è anche da dire una cosa: Un filmato Flash può essere anche bufferizzato;
quindi il caricamento iniziale è più veloce. Inoltre si può suddividere in
sotto filmati, e caricare sono quelli che ci servono al momento giusto.
Cosa che, ovviamente, con una mera immagine gif, non puoi assolutamente
fare.
-- 
ZER0
~ The Tangent Universe collapsed 5975 days, 3 hours, 28 minutes and 28 seconds ago.

 te :-)
Magari fosse vero quello che dici... :-/
Sto per trasferirmi a Novara; bellobbbello ieri sera non sapevo cosa fare e
dico "vediamo le offerte" (in questo momento a casa ho fastweb). Fastweb =>
niente, altre compagnie: niente!!!!
Alla fin fine ho scoperto che di tutta la provincia di Novara sembrerebbe
servita solo Novara città e solo alcune zone!
Ecco entro breve un altro 56k (che se entra in un sito che gli scarica 600k
di immagini rispolvererà i suoi manuali di hacking...:-)  IMHO è peggio di
flash, perché con flash io non installo il plug-in e sono a posto, se uno
se lo installa sa che rischia download enormi. Vero che penso possa dire al
browser di non scaricare le immagini, ma non mi sembra il caso)
