Newsgroup: it.comp.appl.macromedia
Titolo: preload in Flash 4

Premesso che sono nuova con Flash, ma ho buona conoscenza di HTML e
JavaScript, e nel campo dell'animazione - cfr. Autodesk Animatori -, vorrei
sapere se qua dentro esiste un'anima pia che mi dia qualche dritta per
capire come si fa questo benedetto preload o loading che dir si voglia!!!!
Ho tra le mano il solo manuale sul flash che sia riuscita a trovare, ma č
per il flash, e comunque non ne parla assolutamente (l'autore č Darrel
Plant)...chi mi aiuta?
Dyra

Ti riposto dei miei vecchi messaggi, spero ti siano utili per comprendere le
possibilità che ci sono...
Buon lavoro,
-Cyber-
Partendo dal
presupposto che volevo simulare una barra di preload fluida e che arrivasse
comunque al 100% (in questo file, l'ultimo oggetto "pesante" era verso il
75% ed il salto al 100% era troppo breve per essere visualizzato...) ho
dovuto seguire questa procedura:
-------------------------------------------------------------
FRAME 1)    Per qualche strano motivo, Netscape fa fatica a leggere una
istruzione di tipo "If frame is loaded" fuori da un loop (immagino anche le
altre, quindi...). Praticamente, ha un ritardo nel processare le azioni
rispetto all'inizio del filmato. Ritardo calcolato in frazioni di secondo,
ma sufficienti a fargli "saltare" delle istruzioni sui primissimi frame del
movie. Per questo ho dovuto inserire un mini-loop di 3 giri, perfetto per
lasciare il tempo a Netscape di controllare se il file è già in cache e
quindi saltare la barra di preload. Ho fatto ore di prove e calcolato come 3
il numero preciso, a prova di martellamento del tasto "Reload"... Tutto
questo perchè una istruzione "If frame..." sarebbe entrata in conflitto con
gli altri script e non potevo inserirla nel loop generale. Quindi:
If Frame Is Loaded ("inizio")
      Go to and Stop ("inizio")
        End Frame Loaded
            If (fuck_net = 3)
      Go to and Play (3)
End If
--------------------------------------------------------------
FRAME 2) Di supporto alla prima funzione, aumenta la variabile "fuck_net"
(scusate il termine, ma ci stava tutto!!!) di una unità e torna al primo
frame:
Set Variable: "fuck_net" = fuck_net + 1
Go to and Play (1)
--------------------------------------------------------------
FRAME 3)    Inizia lo script che genera la barra. Questo è un controllo che
elimina i Movie Clip duplicati (al frame 5 la funzione di creazione) in caso
il caricamento sia terminato (i MC duplicati vengono inseriti in livelli e
restano visibili anche se si cambia frame) e calcola il numero in
percentuale di frame caricati:
If (i = 100)
      Loop While (i >= 0)
            Remove Movie Clip ("linea" & i)
                Set Variable: "i" = i - 1
                  End Loop
              Go to and Stop ("inizio")
            End If
        Set Variable: "tot_frame" = GetProperty (level0, _totalframes )
    Set Variable: "frame_caricati" = Int ((GetProperty (level0,
_framesloaded )/tot_frame)*100)
--------------------------------------------------------------
FRAME 4)    Viene usato come controllo intermedio. Se la percentuale di
frame caricati è minore al numero di barre duplicate va al frame 5, dove
l'altro script si occuperà di portare il numero di barre duplicate al valore
corretto, altrimenti va al frame 3 e controlla nuovamente a che punto del
caricamento si è arrivati:
If (i < frame_caricati)
      Go to and Play (5)
        End If
    Go to and Play (3)
-------------------------------------------------------------
FRAME 5) Qui si svolge tutta la duplicazione. La seconda linea assegna dei
nomi progressivi ai MC da duplicare, la terza li crea e li inserisce nel
livello corrispondente al numero che compone anche il nome (per livelli
intendo degli "strati" sopra il filmato, non i layer nella timeline anche se
il principio di sovrapposizione è lo stesso...), la quarta li posiziona in
base al numero di pixel necessario (in questo caso, il Movie Clip che viene
duplicato è largo 1 pixel. Quindi si parte dalle coordinate X del MC
"originale" e si posizionano i MC duplicati aggiungendo il numero che li
contraddistingue), la quinta setta la variabile "percentuale" (il nome del
text field che visualizza la percentuale di caricamento) inserendo il numero
del Movie Clip + il segno "%". La percentuale è infatti calcolata in base al
numero dei MC duplicati e non in base al reale caricamento, altrimenti non
ci sarebbero corrispondenze. Ecco lo script:
Set Variable: "i" = i + 1
    Set Variable: "nuovo_nome" = "linea" & i
        Duplicate Movie Clip ("/linea", nuovo_nome, i)
            Set Property (nuovo_nome, X Position) = (GetProperty
(nuovo_nome,_x ) + i)
        Set Variable: "percentuale" = i & "%"
    Go to and Play (3)
------------------------------------------------------------
Questo è tutto. Il filmato è di 48,5 KB (contiene solo materiale alla
rinfusa per far "pesare" il file) ed il preload, da solo, di soli 2 KB...
L'indirizzo del file, aggiornato per il problema Netscape, è sempre lo
stesso:
http://www.digiartstudio.com/ng/preload.html
Buon divertimento ;-)
-Cyber-
Di messaggi sul preloading ne sono stati postati tanti, ti aggiungo una
chicca. Bastano 2 frame...
Frame 1:
    Set Variable: "percentuale" = Int ((GetProperty (level0,
_framesloaded )/GetProperty (level0, _totalframes))*100) & "%"
Frame2:
    Go to and Play (1)
Ti calcola in automatico quanti frame ha il tuo Movie e ti visualizza la
percentuale di caricamento. Naturalmente, un Text Field chiamato
"percentuale" sul primo keyframe...
Puoi anche creare una barra di 1 px, assicurandoti che sia un Movie Clip
con un nome d'istanza a cui farai riferimento, posizionando in questo MC
l'estremità sinistra della barra sul crocino che indica il centro dello
stage,
via ActionScript le sue dimensioni (tramite X SCALE) in base al valore di
percentuale
caricata partendo da zero...
-Cyber-

Grazie per l'aiuto: ho fatto qualche passo in avanti!