Manuale elementi di base
Transcript
Manuale elementi di base
itsosmilano.it A C T I O N S C R I P T 3 Manuale elementi di base A cura dei docenti di STC 1 itsosmilano.it Pag 3 4 5 6 7 8 9 10 11 12 13 14 16 Argomento Azioni principali Panoramica sulla creazione di script Assegnazione di azioni a un fotogramma Gestione di pulsanti Eventi sui pulsanti Gestione tastiera Creazione di istanze di oggetti Navigazione in un filmato Navigazione con filmati multipli Comunicazione con l’esterno Uso della modalità a schermo intero Principali Proprietà Clip Filmato Trascinamento di un clip-filmato Rilevazione collisioni tra clip-filmato Creazione di testo Caricamento di testo da un file esterno Uso e controllo dell’audio Video in streaming Oggetto Math XML e ActionScript Controllo di una condizione addEventListener KeyboardEvent stop(), play(), gotoAndPlay() ecc NavigateToUrl stage.displayState startDrag(); hitTestPoint Sound, SoundChannel Video, NetConnsction, NetStream Appendice if, switch/case 2 itsosmilano.it Panoramica sulla creazione di script ActionScript è il linguaggio per la creazione di script di Flash grazie al quale è possibile aggiungere interattività a un filmato. ActionScript fornisce elementi, quali azioni, operatori e oggetti, che vengono raggruppati in script che forniscono istruzioni al filmato. Per script si intende un insieme di azioni che vengono normalmente eseguite da Flash nell'ordine in cui sono scritte. Il filmato viene impostato in modo che gli eventi, ad esempio il clic del mouse su un pulsante o la pressione di un tasto, attivino tali script. ActionScript può essere usato per creare, ad esempio, pulsanti di navigazione per il filmato. Le azioni sono istruzioni che indicano a un filmato di eseguire una determinata operazione durante la riproduzione. Assegnazione di azioni a un fotogramma Per determinare l'esecuzione di un'azione in un filmato quando l'indicatore di riproduzione raggiunge un fotogramma nella linea temporale, è necessario assegnare un'azione al fotogramma. Ad esempio, per creare una ripetizione ciclica nella linea temporale tra i fotogrammi 20 e 10, è necessario aggiungere al fotogramma 20 un'azione che invia l'indicatore di riproduzione al fotogramma 10: gotoAndPlay (10); Alcune azioni vengono comunemente assegnate al primo fotogramma di un filmato. In generale, è possibile assegnare al primo fotogramma qualsiasi azione che si desidera venga eseguita all'inizio del filmato. È consigliabile collocare tutte le azioni fotogramma in un livello denominato Azioni; in tal modo, è sempre possibile trovare le azioni nella linea temporale. Dopo aver assegnato un'azione, salvare il filmato e provarlo per verificarne il funzionamento. Gestione di pulsanti La gestione dei pulsanti avviene associando ai pulsanti un listener che “ascolta” se si verifica un evento nel qual caso richiama una funzione. Sintassi istanza_pulsante.addEventListener(tipoevento.EVENTO,nomefunzione); function nomefunzione (e:tipoevento){ //azioni in risposta all’evento } dove: istanza_pulsante: nome dell’istanza del pulsante tipoevento: evento di cui si richiede la verifica nomefunzione: nome funzione richiamata in risposta all’evento Esempio puls_home.addEventListener(MouseEvent.CLICK,f_controlla); function f_controlla(e){ this.play(); } Il comando addEventListener è fondamentale: in ActionScript3 quasi ogni cosa viene gestita tramite un evento e questo comando serve ad assegnare un listener e una funzione ad una qualsiasi Istanza. Questo comando richiede almeno due parametri: il primo parametro è il tipo di evento che vogliamo gestire, il secondo parametro è il nome della funzione da richiamare quando si verifica l'evento. Con questo sistema possiamo scrivere una funzione sola ed assegnarla a tanti pulsanti diversi, oppure possiamo aggiungere tanti listener diversi per uno stesso pulsante, ad esempio: 3 itsosmilano.it mioPulsante.addEventListener(MouseEvent.CLICK, f_sparisci); function f_sparisci(m:MouseEvent) { m.currentTarget.visible = false; } mioPulsante.addEventListener(MouseEvent.CLICK, f_traccia); function f_traccia(m:MouseEvent) { gotoAndPlay(10); } il codice qui sopra assegna due Listener allo stesso pulsante, per lo stesso tipo di Evento (Click), al clic sul pulsante verranno eseguite entrambe le funzioni (f_sparisci e f_traccia). Eventi sui pulsanti In sostanza, gli eventi sono condizioni che si verificano di cui ActionScript è consapevole e a cui è in grado di reagire. Molti eventi sono collegati all'interazione dell'utente, la selezione di un pulsante o la pressione di un tasto della tastiera, ma ne esistono anche di altri tipi. Per esempio, se si usa ActionScript per caricare un'immagine esterna, esiste un evento che può avvertire quando l'immagine è stata caricata completamente. In pratica, quando un programma ActionScript è in esecuzione, Adobe Flash Player restano in attesa del verificarsi di determinati eventi. Quando questi eventi si realizzano, eseguono il codice specificato per quegli eventi. Gli Eventi legati al Mouse che possiamo gestire dipendono dall'Ambiente di Runtime. Utilizzando MouseEvent dentro Flash per un Filmato che verrà distribuito in SWF (da visualizzare con Flash Player dentro ad un Browser Web) abbiamo a disposizione questi tipi di eventi: CLICK - Un Click singolo si ha quando l'utente preme il tasto sinistro del mouse e, senza spostarlo, lo rilascia DOUBLE_CLICK - Un Doppio Click, due Click singoli in rapida successione (*) MOUSE_DOWN - La pressione del tasto sinistro del Mouse MOUSE_MOVE - Intercetta il semplice movimento del Mouse MOUSE_OUT | ROLL_OUT - Quando il Mouse esce dall'area interessata dal Listener MOUSE_OVER | ROLL_OVER - Quando il Mouse entra nell'area interessata dal Listener MOUSE_UP - Quando viene rilasciato il tasto sinistro del Mouse MOUSE_WHEEL - Quando si fa scorrere la rotellina del Mouse per utilizzare l'Evento DOUBLE_CLICK bisogna prima impostare la Proprietà doubleClickEnabled a true, in * questo modo: mioPulsante.doubleClickEnabled = true; 4 itsosmilano.it Gestione tastiera La gestione dei tasti della tastiera avviene associando un listener allo stage e verificando se si verifica un evento associato alla pressione o al rilascio del tasto (KEY_DOWN o KEY_UP) e, eventualmente, il codice del tasto. stage.addEventListener(KeyboardEvent.KEY_DOWN, f_pressione); stage.addEventListener(KeyboardEvent.KEY_UP, f_rilascio); function f_pressione(event:KeyboardEvent) { // azioni } Costanti più importanti associate alla tastiera Costante Descrizione (valore numerico) BACKSPACE Costante associata al valore del codice tasto per il tasto Backspace (8). CAPS_LOCK Costante associata al valore del codice tasto per il tasto Bloc Maiusc (20). CONTROL Costante associata al valore del codice tasto per il tasto Ctrl (17). DELETE Costante associata al valore del codice tasto per il tasto Canc (46). DOWN Costante associata al valore del codice tasto per il tasto Freccia giù (40). END Costante associata al valore del codice tasto per il tasto Fine (35). ENTER Costante associata al valore del codice tasto per il tasto Invio (13). ESCAPE Costante associata al valore del codice tasto per il tasto Esc (27). HOME Costante associata al valore del codice tasto per il tasto Home (36). INSERT Costante associata al valore del codice tasto per il tasto Ins (45). LEFT Costante associata al valore del codice tasto per il tasto Freccia sinistra (37). RIGHT Costante associata al valore del codice tasto per il tasto Freccia destra (39). SHIFT Costante associata al valore del codice tasto per il tasto Maiusc (16). SPACE Costante associata al valore del codice tasto per la Barra spaziatrice (32). TAB Costante associata al valore del codice tasto per il tasto Tab (9). UP Costante associata al valore del codice tasto per il tasto Freccia su (38). Nota Codice del tasto A 65, del tasto B 66, ecc. Creazione di istanze di oggetti Per poter utilizzare un oggetto in ActionScript, l'oggetto deve già essere stato creato. Il primo passo nella creazione di un oggetto è la dichiarazione di una variabile, vale a dire, l'identificazione di una porzione di memoria del computer destinata a contenere dei dati. In seguito, questo spazio vuoto va riempito assegnando un valore alla variabile, in pratica creando un oggetto e memorizzandolo nella variabile in modo che possa diventare utilizzabile. Il processo di creazione di un oggetto corrisponde alla creazione di un'istanza di una particolare classe. Esiste un modo semplice per creare un'istanza di un oggetto che non prevede l'utilizzo di ActionScript. In Flash, quando si inserisce un simbolo di clip filmato, un simbolo di pulsante o un campo di testo sullo stage e ad esso si assegna un nome di istanza nella finestra Proprietà, l'applicazione dichiara automaticamente una variabile usando quel nome di istanza, crea un'istanza dell'oggetto e memorizza l'oggetto nella variabile. Navigazione in un filmato Per controllare la linea temporale di un filmato, consentendo in tal modo una navigazione di “basso livello”, sono disponibili le azioni: interrompe il filmato attualmente in riproduzione stop (); play(); gotoAndStop(fotogramma); gotoAndPlay (fotogramma); sposta la testina di lettura in avanti nella linea temporale invia la testina di lettura al frame specificato da fotogramma e lo blocca in tale posizione invia la testina di lettura al frame specificato da fotogramma e inizia la riproduzione da tale fotogramma 5 itsosmilano.it nextFrame(); prevFrame(); invia la testina di lettura al successivo fotogramma e lo blocca in tale posizione invia la testina di lettura al fotogramma precedente e lo blocca in tale posizione Fotogramma può essere un numero o, meglio, una etichetta. Es.: gotoAndPlay(10); gotoAndPlay(“sez1”) Navigazione con filmati multipli È sempre utile poter caricare dei file .swf esterni in modo da non rendere il movie Flash principale troppo pesante. In questo modo si può ad esempio creare un movie Flash principale contenente i link alle varie sezioni del sito, sezioni che però saranno create esternamente come file .swf importabili. Il caricamento può avvenire in modo asincrono o sincrono. Il caricamento asincrono prevede che, una volta lanciato il processo di loading, il flusso del programma continui senza tener conto del suo avanzamento: solo quando il file è completamente caricato, il processo di loading lo segnala e il filmato può essere mandato in esecuzione. Quindi, non potendo valutare il tempo di caricamento, l'esecuzione del filmato sarà asincrona rispetto al codice del movie Flash principale. La gestione asincrona avviene quindi tramite un listener di eventi. Il caricamento sincrono invece avviene in diretta sequenza di codice, senza utilizzare un listener di eventi di caricamento. Caricamento sincrono Per caricare un swf in modo sincrono bisogna creare per prima cosa un oggetto Loader, si crea quindi un oggetto per richiedere l'URL e si associa ll'URL all'oggetto Loader. var carica= new Loader(); var req=new URLRequest(“fileSecondario.swf”); carica.load(req); In questo modo il file esterno viene caricato dentro l'oggetto Loader. Non ci resta che renderlo visibile inserendolo sulla scena dell’swf principale: addChild(loader); In questo modo l'oggetto viene caricato sullo stage principale con posizione x=0 e y=0. Caricamento asincrono Per quanto riguarda il caricamento asincrono, le prime tre fasi rimangono le stesse e cioè: la creazione di un oggetto Loader, la richiesta dell'URL e l'associazione tra i due oggetti: var carica= new Loader(); var req=new URLRequest(“fileSecondario.swf”); carica.load(req); A questo punto, però, viene aggiunto un evento Listener sul caricamento del file: carica.ContentLoaderInfo.addEventListener(Event.COMPLETE, f_completo); L'evento è naturalmente assegnato all'oggetto carica, il quale si occupa materialmente del caricamento del file esterno. Le istruzioni e le informazioni sul caricamento vengono però richieste non direttamente all'oggetto Loader ma attraverso la proprietà ContentLoaderInfo. Essa serve per estrapolare tutti i dati relativi al caricamento del file. A quest'ultima viene quindi assegnato un Listener che rimane in “ascolto” finché non avviene l'evento COMPLETE. Quindi, quando il caricamento è completo, viene richiamata la funzione scritta come secondo parametro dell'evento(f_completo). 6 itsosmilano.it La funzione richiamata contiene naturalmente l'azione di inserimento del contenuto sullo stage del file principale: function f_completo(e:Event){ addChild(e.target.content); } Anche in questo caso il file viene caricato sullo stage con posizione x=0 e y=0. Comunicazione con l’esterno Per collegare da un filmato Flash una pagina Web si deve utilizzare l’azione NavigateToUrl(). Questa permette di creare un normale collegamento ipertestuale (equivalente al tag <a> dell’HTML). Per poter utilizzare NavigateToUrl() occorre prima definire la richiesta di una certa pagina tramite l’oggetto URLRequest. Sintassi: var richiesta = new URLRequest (“percorso pagina”); //viene definita la richiesta di una pagina NavigateToUrl(richiesta di tipo URLRequest, target); //viene comunicata la richiesta all’azione NavigateToUrl; il parametro target definisce se caricare la pagina al posto di quella attuale (“_self”) o in una nuova finestra o scheda (“_blank”). Es.: p_quadrato.addEventListener( MouseEvent.CLICK, f_carica); function f_carica (e){ var richiesta = new URLRequest("http://itsosmilano.it"); navigateToURL(richiesta, "_blank"); } Uso della modalità a schermo intero La modalità a schermo intero consente di impostare lo stage di un filmato in modo che occupi l'intero monitor senza menu o bordi del contenitore. La proprietà displayState della classe Stage consente di attivare e disattivare la modalità a schermo intero per un file SWF. La proprietà displayState può essere impostata su uno dei valori definiti. Per attivare la modalità a schermo intero, occorre impostare la proprietà displayState su stageDisplayState.FULL_SCREEN, per la modalità normale va impostata su NORMAL. stage.displayState = stageDisplayState.FULL_SCREEN; Principali Proprietà Clip Filmato Un clip filmato flash ha delle proprietà che possono essere modificate dinamicamente tramite le azioni ActionScript. La tabella seguente ne descrive le più importanti. Proprietà alpha height loaderInfo rotation totalframes useHandCursor scaleX scaleY Descrizione I valori validi sono quelli compresi tra 0 (completamente trasparente) e 1 (completamente opaco). Il valore predefinito è 1. L'altezza di un'istanza di clip filmato espressa in pixel. Restituisce un oggetto LoaderInfo contenente informazioni sul caricamento del file al quale questo oggetto di visualizzazione appartiene. Es. var b_caricati = stage.loaderInfo.bytesLoaded; Il grado di rotazione di un'istanza di clip filmato (in gradi da 0 a 360). Il numero totale di fotogrammi in un'istanza di clip filmato. Determina se lo strumento Mano viene visualizzato quando l'utente posiziona il puntatore sul pulsante di un clip filmato. Valore che specifica la percentuale di modifica in scala orizzontale di un clip filmato; 1.0 equivale a una scala del 100% Valore che specifica la percentuale di modifica in scala verticale di un clip filmato; 1.0 equivale a una scala del 100% 7 itsosmilano.it visible width x y Valore booleano che determina se un'istanza di clip filmato è nascosta (false) o visibile (true). La larghezza di un'istanza di clip filmato espressa in pixel. La coordinata x di un'istanza di clip filmato (distanza in pixel del clip filmato dal bordo sx dello stage). La coordinata y di un'istanza di clip filmato (distanza in pixel del clip filmato dal bordo superiore dello stage). La modifica di un proprietà avviene con azioni aventi la seguente sintassi: istanza_clipfilmato.proprietà = valore; Es.: aereo.x += 10; // sposta un clip filmato (nome istanza “aereo”) a dx di 10 pixel Trascinamento di un clip-filmato Per rendere un pulsante o clip filmato trascinabili durante la riproduzione del filmato si possono utilizzare i metodi startDrag/stopDrag() Sintassi istanza.startDrag(); istanza_clip.startDrag([bloccato]); istanza_clip.startDrag([bloccato [,area]]); istanza.stopDrag(); Argomenti istanza: istanza del pulsante/clip da rendere trascinabile bloccato: valore che specifica se l’oggetto trascinabile è bloccato al centro rispetto alla posizione del mouse (true) oppure in corrispondenza del punto in cui l'utente ha fatto clic inizialmente nel clip filmato (false). È un argomento opzionale. area: definizione di un rettangolo di delimitazione per il movimento dell’oggetto trascinabile; l’area viene definita tramite l’oggetto Rectangle. Nota È possibile trascinare un solo clip filmato alla volta. Una volta eseguita un'operazione startDrag, il clip rimane trascinabile fino alla chiamata esplicita di un'azione stopDrag o di un'azione startDrag per un altro clip. Esempi segnale.startDrag(); segnale.startDrag(false); var area = new Rectangle(50,50,540,380); segnale.startDrag(true,area); segnale.stopDrag(); Rilevazione collisioni tra clip-filmato Per rilevare le collisioni tra due clip-filmato si può utilizzare il metodo hitTestPoint Esso verifica se un oggetto è entrato in collisione con un clip filmato e restituisce un valore (true o false). Sintassi istanza.hitTestPoint(x, y, indicatoreForma); Argomenti istanza: istanza dell’oggetto di cui verificare la collisione x: La coordinata x da confrontare con l’oggetto y: La coordinata y da confrontare con l’oggetto 8 itsosmilano.it indicatoreForma: Valore booleano (cioè true oppure false) che specifica se valutare l'intera forma dell'istanza specificata (true) oppure solo il riquadro di limitazione (false). Esempio if (target.hitTestPoint(segnale.x,segnale.y,true)) { // azioni } Creazione di testo È possibile creare tre tipi di campi di testo: statico, dinamico e di input. Il testo statico non viene modificato durante la riproduzione Le caselle di testo dinamico contengono testo soggetto ad aggiornamento dinamico, ad esempio i punteggi di incontri sportivi, le quotazioni azionarie o i bollettini meteorologici I campi di testo di input consentono di immettere del testo in moduli o questionari. La finestra Proprietà consente di specificare le opzioni per controllare la modalità di visualizzazione del testo dinamico o di input in un filmato Flash. Tra le altre cose è possibile immettere il nome dell’istanza che permette di modificare (campi dinamici) o rilevare (campi di input) il contenuto del campo di testo creato. Esempi Supponendo che l’istanza della casella dinamica sia txtNome, l’azione: txtNome.text=”Bluetti Tatiana”; visualizza la sequenza di caratteri Bluetti Tatiana nella casella dinamica. Supponendo invece la variabile txtPosiz associata ad una casella di input, l’azione: aereo.x = txtPosiz.text; sposta l’istanza di clip filmato di nome aereo nella posizione orizzontale data dal valore inserito nella casella di input. 9 itsosmilano.it Caricamento di testo da un file esterno La classe URLLoader offre un meccanismo per il caricamento di testo da un file esterno (esempio .txt) in una casella di testo dinamico. Le operazioni da compiere sono: definire una variabile URLRequest con il percorso del file da caricare definire una variabile URLLoader per il caricamento caricare il testo tramite il metodo load verificare se il caricamento è completo e utilizzare il testo Esempio var testoURL = new URLRequest("pincopallino.txt"); var carica = new URLLoader(testoURL); carica.load(testoURL); carica.addEventListener("complete", f_carica); //---------------------------------------------function f_carica(e){ casella.text=e.target.data; } // casella é un testo dinamico In caso di caricamento al clic su un pulsante la funzione carica andrà sostituita dalle seguenti: function f_carica(e){ temp=e.target.data; //temp variabile temporanea } pulsante.addEventListener(MouseEvent.CLICK, f_vis); function f_vis(m){ casella.text=temp; } 10 itsosmilano.it Uso e controllo dell’audio Vi sono due modi per gestire in modo efficace l’audio con Flash: Incorporamento Viene importato il file audio nella libreria Nel pannello Proprietà, scheda Actionscript, viene settato Esporta per Actionscript e dato un nome alla classe In azioni viene creato l’oggetto audio: var nome_audio = new nome_classe(); i metodi play() e stop() permettono l’avvio e lo stop dell’audio. Collegamento L’audio si trova in un file esterno (es. .mp3). Viene definita un oggetto Sound La classe Sound consente di eseguire operazioni sui file audio in un'applicazione. La classe Sound consente di creare un oggetto Sound, di caricare e riprodurre un file MP3 esterno, di interrompere l'audio e di accedere ai dati relativi al file audio, ad es. il numero di byte del file. Viene definito un oggetto SoundChannel La classe SoundChannel controlla i suoni in un'applicazione. Ogni suono viene assegnato a un canale audio e l'applicazione può avere più canali audio mixati tra loro. La classe SoundChannel contiene un metodo stop(), e delle proprietà (ad es. position indica il tempo trascorso dall’inizio della riproduzione) Viene definito il percorso del file audio tramite la classe URLRequest La classe URLRequest permette di definire il percorso di un file esterno. Gli oggetti URLRequest vengono passati ai metodi load() della classe Loader e ad altre operazioni di caricamento, per avviare lo scaricamento dell'URL. Viene avviato il caricamento dell’audio Viene gestito l’audio (metodi play() e stop() ) Parametri del metodo play: posizione iniziale della riproduzione in millisecondi numero di ripetizioni eventuali specifiche su volume, bilanciamento, ... Esempio var s = new Sound(); var canale:SoundChannel; var percorso = new URLRequest("percorso.mp3"); s.load(percorso); canale=s.play(0,100); avvia.addEventListener(MouseEvent.CLICK,avviaSound); stoppa.addEventListener(MouseEvent.CLICK,fermaSound); function avviaSound(evento:MouseEvent){ canale=s.play(0,100); } function fermaSound(evento:MouseEvent){ canale.stop(); } 11 itsosmilano.it Video in streaming Le ultime versioni di Flash hanno introdotto la gestione dei filmati attraverso il formato FLV, un tipo di file che permette livelli di compressione, risoluzioni e qualità totalmente personalizzabili. Il processo che permette di pubblicare video in una pagina Web è molto semplice: si converte il file video originale in FLV utilizzando le funzionalità integrate in Flash o programmi di compressione esterni si crea con Flash una "cornice" di riproduzione, ovvero un filmato SWF che leggerà il file FLV esterno precedentemente creato si inserisce il file SWF nella pagina Web e si carica il file FLV su un server (abilitato o no allo streming video). Specifiche Creazione dell’oggetto video Un oggetto video può essere creato tramite il pannello Libreria: Nuovo Video e si crea un’istanza sullo stage dando un nome nel pannello Proprietà tramite Actionscript: var oggetto_video= new Video(); addChild(oggetto_video); Creazione istanza di un oggetto NetConnection La classe NetConnection fornisce il mezzo per riprodurre i file FLV in streaming da un'unità locale o da un indirizzo HTTP Apre una connessione locale che consente di riprodurre i file video (FLV); il parametro deve essere sempre 'null'. oggetto_connection.connect(null); Creazione istanza oggetto NetStream La classe NetStream fornisce i metodi e le proprietà per riprodurre i file FLV dal file system locale o da un indirizzo HTTP. var oggetto_netstream = new NetStream(obj_nc); oggetto_video.attachNetStream(oggetto_netstream); Riproduzione del video tramite il metodo play Esempio var objvideo=new Video(); addChild(objvideo); var obj_nc = new NetConnection(); obj_nc.connect(null); var obj_ns = new NetStream(obj_nc); objvideo.attachNetStream(obj_ns); obj_ns.play("percorso.flv"); 12 itsosmilano.it Oggetto Math I metodi e le proprietà di questo oggetto consentono di accedere e gestire le costanti e le funzioni matematiche. Tutte le proprietà e i metodi dell'oggetto Math sono statici e per richiamarli è necessario usare la sintassi Math.metodo (parametro) o Math.costante. Riepilogo dei metodi principali validi per l'oggetto Math Metodo Math.ceil Math.floor Math.random Math.round Descrizione Arrotonda un numero per eccesso all'intero più vicino. Arrotonda un numero per difetto all'intero più vicino. Restituisce un numero pseudocasuale n dove 0 <= n < 1. Arrotonda al numero intero più vicino. 13 Esempio Math.ceil(x) (con x numero o espressione) Math.floor(x) (con x numero o espressione) Math.random() Math.round(x) (con x numero o espressione) itsosmilano.it XML e Actionscript XML è una modalità standard di rappresentazione delle informazioni strutturate che permette ai computer di manipolarle con facilità e alle persone di scriverle e capirle senza eccessiva difficoltà. XML impiega una struttura ad albero e tag simile a quella di HTML Es.: <canzone> <titolo> Why don’t you know? </titolo> <artista> Johnny Cascaterra </artista> <anno> 2010 </anno> </canzone> Caricamento file XML Per poter caricare un file XML in Flash occorre: creare una variabile per contenere una istanza della classe XML creare un'istanza della classe URLLoader per caricare il file XML passare il contenuto del file XML nella variabile istanza XML una volta che il file è stato completamente caricato. Esempio var classif = new URLRequest("classifica.xml"); var carica_classif = new URLLoader(classif); carica_classif.load(classif); carica_classif.addEventListener("complete", f_opera); var squadre; function f_opera(m){ squadre =new XML(m.target.data); } Elaborazione file XML I nuovi controlli XML in ActionScript 3.0 i permettono di filtrare gli elementi attraverso la ricerca di valori e mostrando solo quelli che corrispondono alla condizione impostata. Supponendo il file classifica.xml così strutturato: <campionato> <squadra> <nome>juve</nome> <citta>torino</citta> <punti>25</punti> <golF>20</golF> <golS>8</golS> </squadra> <squadra> <nome>lazio</nome> <citta>roma</citta> <punti>23</punti> <golF>16</golF> <golS>10</golS> </squadra> <squadra> 14 itsosmilano.it <nome>milan</nome> <citta>milano</citta> <punti>21</punti> <golF>12</golF> <golS>11</golS> </squadra> …………………………….. ………………………………. </campionato> Si avrebbe che: squadre.squadra[0].nome squadre.squadra[1].citta squadre.squadra.(nome==”milan”).punti 15 risulta juve risulta roma risulta 21 itsosmilano.it APPENDICE Controllo di una condizione Per verificare una condizione in ActionScript si possono usare le azione if o switch/case L'istruzione condizionale if..else consente di provare una condizione e quindi eseguire un blocco di codice se la condizione è soddisfatta o un blocco di codice alternativo in caso contrario. Sintassi if (condizione) { azioni1; } else { azioni2; } Note La condizione è una espressione linguistica che può assumere i valori vero (true) o falso (false) Se la condizione è vera verrà eseguito il blocco azioni1; se la condizione è falsa verrà eseguito il blocco azioni2 Se non esistono azioni da eseguire quando la condizione è falsa tutto il blocco else { } viene omesso La condizione, nella forma base, ha la struttura sintattica seguente: (operando1 operatore operando2) dove: operando1 e operando2 sono termini da confrontare (valori numerici o testuali costanti o variabili derivanti da risultati di calcoli o, ad es. valori di proprietà di clip, ecc.) operatore è uno tra i seguenti operatori di confronto: == (uguale), != (diverso), > (maggiore), < (minore), >= (maggiore o uguale), <= (minore o uguale). Esempio function f_conta(evento){ if (num.text< 10){ num.text=Number(num.text)+1; } } L'istruzione switch è utile quando sono presenti vari percorsi di esecuzione che dipendono dalla stessa espressione condizionale. Fornisce funzionalità simili a una lunga serie di istruzioni if..else if, ma è più semplice da leggere. Sintassi switch (valore) { case valore 1: //gruppo azioni1 break; case valore 2: //gruppo azioni2 break; ……………….. case valore n: //gruppo azionin break; } 16 itsosmilano.it Esempio function tastiera(evento){ //Verifica se vengono digitate le freccie direzionali switch (evento.keyCode) { case Keyboard.UP : sole.y-=10; break; case Keyboard.DOWN : sole.y+=10; break; case Keyboard.LEFT : sole.x-=3; sole.rotation-=1; sole.alpha+=.01; break; case Keyboard.RIGHT : sole.x+=3; sole.rotation+=1; sole.alpha-=.01; break; default : break; } } 17