Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Flash MX? Addio Generator

Gestione dinamica di MP3 e JPG
Gestione dinamica di MP3 e JPG
Link copiato negli appunti

Due delle più attese novità del FlashMX, che hanno contribuito all'abbandono del Generator da parte della Macromedia, che pure ne mantiene il supporto, sono la possibilità di utilizzare file MP3 esterni al filmato, e di caricare, tramite loadMovie, jpg nativi.

L'importanza di questo cambiamento, nella storia del Flash, è epocale. Innanzitutto, prima dell'arrivo di questo plugin, creare un player musicale, per qualunque tipo di suono che fosse evento, o loop, non era possibile se non importando i suoni al momento dell'authoring, oppure creando filmati swf contenenti il suono, da gestire con l'attachSound o i suoni nei frame.

Adesso, invece, è possibile caricare direttamente un mp3, ovunque si trovi. Basta impostare i giusti percorsi nel filmato, o caricarli da database o file di testo. Ogni altra cosa, viene facilmente gestita tramite actionscript.

3 metodi, due proprietà, due eventi, e creare un lettore di questo tipo è estremamente semplice. Oltre alla gestione già nota, con tutte le azioni dell'oggetto Sound, abbiamo infatti a nostra disposizione:

oggetto.loadSound("percorso/file.mp3", true/false);

Una volta creata l'istanza dell'oggetto Sound, si carica tramite loadSound il file mp3 indicato tra virgolette (percorso assoluto o relativo), per poi settare true se si vuole che il file venga riprodotto in streaming, false per attendere il caricamento completo.

oggetto.getBytesLoaded();
oggetto.getBytesTotal();

metodi già conosciuti per i movieclip, ci restituiscono i bytes totali e i bytes caricati dell'oggetto che contiene il file mp3, permettendoci di creare un comunissimo preloader (cosa che manca nel caricamento dei jpg). L'evento

oggetto.onLoad = funzione;

esegue la funzione indicata dopo l'uguale, una sola volta al termine del caricamento dell'oggetto (assimilabile al ClipEvent(data)), mentre

oggetto.onSoundComplete = funzione;

esegue la funzione ogni volta che è terminata la riproduzione dell'oggetto (nel senso che ha completato un ciclo: quindi ci permette di tenere conto di quante volte un brano è stato riprodotto). Infine:

oggetto.duration
oggetto.position

sono due proprietà di sola lettura che ci restituiscono, rispettivamente, la durata dell'oggetto, e la sua posizione di riproduzione (per intenderci, da quanto è iniziato un ciclo), entrambe in millisecondi.

Queste due proprietà, prospettano vasti orizzonti per quanto riguarda la gestione del suono. Mentre una volta la lunghezza del suono andava conosciuta prima, e la posizione si deduceva con complessi sistemi di calcolo con il getTimer(), adesso possiamo facilmente:

  • creare una pausa: si calcola la posizione al momento dello stop, e la si inserisce come offset dello start() al momento della ripresa
  •  calcolare la percentuale di riproduzione
  •  utilizzare slider di posizione,e funzioni di avanzamento e riavvolgimento veloce
  •  calcolare il tempo trascorso ed il tempo rimasto (duration-position)

e così via. Importante da notare, è che in questo modo possiamo facilmente mettere in pausa un loop, cosa che con l'actionscript disponibile in flash 5 era decisamente ardua.

Nota positiva: per il piacere dei puristi del suono, caricando un mp3 in questo modo, non si ha la fastidiosissima pausa alla fine di ogni ciclo quando il suono stesso è in loop.

Nota negativa: tuttora, l'offset del metodo start(), viene indicato in secondi, e non in millisecondi, a scapito della precisione nella ripresa di un suono interrotto.

Per quanto riguarda i jpg, il discorso è molto più semplice. L'immagine esterna viene caricata con un comunissimo:

loadMovieNum("percorso/immagine.jpg", livello);

oppure con:

movieclip.loadMovie("percorso/immagine.jpg");
loadMovie("percorso/immagine.jpg", movieclip);

Purtroppo, per questa feature non sono disponibili nuove azioni, il che significa che preloader ed eventi vanno creati dallo sviluppatore. Inoltre, dal momento che non è possibile inserire nel jpg un preloader (cosa che veniva fatta quando le immagini venivano importate in quelli che dovevano essere file esterni), bisogna arrangiarsi a calcolare peso e percentuali tramite script residenti in altri movieclip d'appoggio. L'immagine tende a caricarsi in un'unica volta, ma è comunque meglio caricarla nascosta o fuori dallo stage.

Buone soluzioni, sono quelle di caricare l'immagine in un movieclip, in modo da poterla poi più agevolmente scalare e spostare.

Notazione importante: il plugin è in grado di riprodurre il caricamento solo di jpg nativi, e quindi il caricamento di file immagine con altre estensioni, come le gif, falliranno senza conseguenze.

Ti consigliamo anche