Uno degli aspetti più interessati di Flash Lite 2.0 è la possibilità di caricare immagini, suoni e video da file esterni. Questo evita di dover dover includere queste risorse nell'swf rendendo il filmato più leggero. Come già è successo in ambito desktop ai tempi al passaggio tra Flash 5 a Flash Mx, la possibilità di caricare risorse esterne apre nuovi orizzonti nello sviluppo progetti in Flash Lite.
Uno dei campi di applicazione è quello delle news e dei servizi ad esse correlati; per quanto fosse già possibile con le precedenti versioni di Flash Lite caricare dei testi e documenti XML (e quindi anche i feed rss), la possibilità di integrare immagini e contenuti video alle notizie sul cellulare da sicuramente un notevole valore aggiunto.
Anche chi gestisce un blog può trarre vantaggio da queste novità consentendo all'utente di visualizzare sul proprio cellulare non solo una notizia ma anche un'immagine descrittiva, senza contare i casi in cui magari una stessa immagine debba essere cambiata ad intervalli regolari di tempo: con Flash Lite 2.0 è possibile mostrare l'immagine aggiornata in ogni momento.
Questa miglioria ci permette di incrementare la dinamicità dei nostri progetti. Ad esempio, nelle le precedenti versioni di Flash Lite era possibile creare un filmato che proponesse ad ogni esecuzione un'immagine casuale, ma tutte le immagini avrebbero dovuto essere inglobate all'interno dell'swf originale con conseguente aumento di peso del file finale. Con Flash Lite 2.0 invece è possibile caricare le immagini quando opportuno senza inficiare sul peso dell'swf.
Inoltre possiamo proporre una esperienza utente più interattiva, ad esempio, creando lettori multimediali di foto, audio e video o rendendo le nostre applicazioni personalizzabili permettendo al'utente di impostare preferenze come l'aspetto grafico, il tutto senza dover riempire la libreria dell'swf originale.
Il risparmio di spazio e memoria che ne deriva può consentire agli sviluppatori di migliorare o aggiungere nuove caratteristiche o funzioni in giochi e applicazioni.
Esempi pratici
Poiché un esempio vale più di mille parole, andiamo a vedere come caricare file esternamente e analizziamo le differenze in termini di peso finale del progetto.
Il caricamento di immagini
Il caricamento di immagini esterne è quello che copre la maggior parte dei formati esistenti, infatti è possibile caricare:
- gif (non animate),
- jpg (progressive e non)
- png.
Questi formati garantiscono una buona compatibilità specie con il web dove sono frequentemente utilizzati. Inoltre sono quelli con il miglior rapporto di compressione/qualità e si rivelano quindi adatti a situazioni dove il risultato finale debba essere il più leggero possibile.
Proprio perché i cellulari hanno memoria e processore molto limitati, in Flash Lite è stato inserito un limite di 5 chiamate per ogni fotogramma; questo significa che potremo caricare solamente 5 immagini alla volta da un fotogramma, andiamo a vedere meglio di cosa si tratta.
Per prima cosa avviamo Flash, creiamo un nuovo progetto dal menu File>Nuovo... e selezionando "Telefoni globali" nella scheda "Modelli". Tra i modelli proposti scegliamo "Flash Lite 1.1 - Symbian series 60".
Nel pannello "Proprietà" (posto solitamente in basso nello schermo) premiamo il tasto "Impostazioni" ed impostiamo come versione del player "Flash Lite 2.0" e come versione di actionscript "Actionscript 2.0". Salviamo il nostro file con un nome a piacere e nella stessa cartella inseriamo una o più immagini (nell'esempio è presente un solo file jpg, di nome "img.jpg").
Portiamoci ora sul primo fotogramma della linea temporale ed apriamo il pannello "Azioni". Qui inseriamo il comando per caricare un'immagine esterna.
Caricamento immagine su un livello
loadMovieNum(url,livello)
Caricamento immagine in un movieclip.
movieclip.loadMovie(url)
Poiché in questo caso vogliamo solo sperimentare il caricamento di un'immagine esterna e i relativi limiti non staremo a creare dei movieclip ma sfrutteremo i livelli, pertanto utilizziamo il codice
loadMovie("img.jpg",1)
per caricare il jpg sul livello 1. L'immagine verrà posizionata nell'angolo in alto a sinistra.
Come abbiamo osservato precedentemente, Flash Lite 2.0 impone un limite di 5 chiamate ad URL esterni al filmato; per provare replichiamo il codice inserito in questo modo
loadMovie("img.jpg",1);
loadMovie("img.jpg",1);
loadMovie("img.jpg",1);
loadMovie("img.jpg",1);
loadMovie("img.jpg",1);
loadMovie("img.jpg",1);
Testando nell'emulatore noteremo che ci viene restituito l'errore
Messaggio di errore
FTPS031: More than five instances of URL Request calls found, only five allowed per frame
Questo si verifica sia che richiamiamo lo stesso file su uno stesso livello, sia nel caso in cui richiamassimo diversi file su diversi livelli (o movieclip).
Questo limite in realtà è facilmente aggirabile dividendo le chiamate su più fotogrammi, in modo che su ognuno siano presenti al massimo cinque chiamate ad URL esterni, consideriamo comunque che sono piuttosto rari i casi in cui avremo bisogno di caricare nello stesso momento più di 5 immagini, per cui il "fastidio" è decisamente relativo e comunque qualora fosse necessario bastano pochi passaggi per aggirare il problema, stando comunque sempre attenti a non utilizzare immagini troppo pesanti per evitare possibili blocchi della periferica.
Concludiamo la parte relativa alle immagini considerando che è possibile sapere quali formati sono supportati dal cellulare su cui viene eseguito il filmato utilizzando il comando
System.capabilities.imageMIMETypes
Questo ci consente di conoscere i formati supportati e quindi ad esempio sarebbe eventualmente "avvisare" l'utente che il suo cellulare non è in grado di caricare il formato da noi previsto piuttosto che far proseguire l'esecuzione dell'swf con degli errori.
Caricamento di suoni
Il caricamento esterno di un suono è analogo a quello di un'immagine e si esegue utilizzando il comando loadSound()
. Anche in questo caso la quantità di formati supportati è decisamente elevata, infatti Flash Lite 2.0 supporta:
- mp3
- mfi
- smaf
- midi
Inoltre per ogni formato abbiamo a disposizione comandi per sapere se anche la periferica su cui viene eseguito il nostro swf può riprodurre questi file.
- _capMFi
- _capMIDI
- _capMP3
- _capSMAF
Ognuno di essi restituisce true o false se il formato è supportato oppure no.
Per caricare un file basta utilizzare un codice di questo tipo:
suono = new Sound();
suono.load("file.mid");
Anche in questo caso come per le immagini vi è limite delle 5 chiamate per fotogramma, trattandosi sempre di URL esterni.
Caricamento di video
Il caricamento di video è quello un po' più lungo da realizzare poiché richiede la creazione di un apposito oggetto Video dalla libreria e può richiedere la conversione del filmato in formato .mov o .3gp per comprimerlo e renderlo quindi leggero e adatto all'ambito dei cellulari.
I formati supportati principalmente sono:
- mp4
- mov
- 3gp
Come per le immagini possiamo utilizzare una sola linea di codice, ovvero:
System.capabilities.videoMIMETypes
per conoscere quali tra questi siano supportati dal cellulare su cui è in esecuzione l'applicazione.
Una volta creato l'oggetto video nella libreria e posizionato sullo stage è molto semplice richiamare il filmato esterno, è sufficiente assegnare un nome istanza all'oggetto video e quindi utilizzare il codice:
istanzavideo.play("clip.3gp");
Conclusione
Come abbiamo visto il procedimento per importare immagini, suoni o video è relativamente semplice e solitamente bastano una o due linee di codice per eseguire questa operazione; ovviamente ognuno di questi oggetti multimediali prevede poi altre azioni atte a controllarne la riproduzione e molti altri aspetti (specialmente audio e video). In questo articolo ci siamo occupati solo di esaminare il caricamento di fonti esterne e risparmiare peso sull'swf principale senza analizzare a fondo i comandi di ogni oggetto.
È possibile scaricare alcuni esempi qui