Flash CS3: la nuova gestione degli eventi
mercoledì 19 dicembre, 2007Finalmente con ActionScript 3.0 non abbiamo più due diverse gestioni di eventi come accadeva prima di ActionScript 2.0 (vedi: Gestione degli eventi: similitudini tra Flash e Javascript). Il metodo addEventListener(), onnipresente nella nuova architettura, permette di gestire in modo nuovo e straordinariamente pulito tutti gli eventi possibili, anche quelli personali. La nuova organizzazione in package permette di importare gli eventi che ci servono e trattarli tutti allo stesso modo:
-
// Events
Le differenze tra la gestione degli eventi sono quindi scomprase. Un MovieClip non ha più le pseudo-proprietà evento come onRelease o onEnterFrame. Il classico RollOver, ad esempio, diventa:
-
...
-
...
-
}
La soluzione proposta in Flash: come inizializzare componenti nel costruttore di una classe, ad esempio, viene risulta in ActionScript 3.0 in questo modo:
La gestione della tastiera in un TextFiled è:
-
...
-
-
if (e.keyCode == 13) {
-
...
-
}
-
}
Questa nuova gestione degli eventi, nuova per ActionScript ma nota a chi lavora in Javascript ad esempio (merito di ECMAScript 4), si riflette anche nella gestione e produzione di eventi propri. Immaginiamo di creare una classe TextFieldExt, una estensione del classico TextField, e vogliamo fare in modo che quando viene premuto in tasto {INVIO} durante la digitazione viene rilasciato un nostro personale evento. Prima di tutto costruiamo il nostro MovieClip con un TextField a bordo che chiamiamo text_txt. Come visto in precedenza associaciamo un listener a questo controllo e generiamo un nostro evento personale in modo semplice:
-
...
-
-
if (e.keyCode == 13) {
-
this.dispatchEvent (me);
-
}
-
}
Quando andremo ad usare la nostra istanza del TextFieldExt potremmo scrivere:
-
myTextFieldExt.addEventListener("RETURN", _onReturn);
-
...
-
...
-
}
Dove è myTextFieldExt è un'instanza della nostra classe TextFieldExt. Ultima cosa, non meno importante, come indicato nella Guida interna di Flash CS3, è possibile ovviamente creare degli eventi personalizzati come classi, cioè nostre classi che estendono la classe Event; quindi in maniera più completa e particolareggiata. Come la classe Alarm proposta nella Guida... ma questo lo vedremo un'altra volta
.










19

[...] "uniformare", come già accaduto con gli eventi (vedi La nuova gestione degli eventi di Flash CS3 e Flash CS3: la nuova gestione degli eventi), una delle tante novità presenti in Actionscript 3.0 è la scomparsa di tutti quei metodi ad hoc [...]