Gli eventi di ogni componente vengono trasmessi a seguito dell'interazione dell'utente. Ad esempio, quando un utente fa clic su un componente Button, viene inviato un evento
MouseEvent.CLICK
; mentre quando un utente seleziona una voce dal componente List, viene inviato un evento
Event.CHANGE
. Un evento può inoltre essere generato quando si verifica un evento significativo per il componente. Ad esempio, una volta terminato il caricamento del contenuto per un'istanza UILoader, viene generato un evento
Event.COMPLETE
. Per gestire un evento, potete scrivere del codice ActionScript che viene eseguito quando l'evento si verifica.
Gli eventi di un componente includono gli eventi di tutte le classi dalle quali il componente eredita. Questo significa che tutti i componenti di interfaccia utente ActionScript 3.0 ereditano gli eventi dalla classe UIComponent, che costituisce la classe base di tali componenti. Per vedere l'elenco degli eventi trasmessi da un componente, vedete la sezione Eventi della voce classe del componente nella
Guida di riferimento di ActionScript 3.0
per Flash Professional
.
Per una descrizione completa della gestione degli eventi in ActionScript 3.0, vedete la guida
Programmazione in ActionScript 3.0
.
Informazioni sui listener di eventi
I punti chiave riportati di seguito riguardano la gestione degli eventi relativi ai componenti ActionScript 3.0:
-
Tutti gli eventi vengono trasmessi da un'istanza della classe di un componente. L'istanza del componente è il
broadcaster
.
-
Per registrare un
listener
di eventi, chiamate il metodo
addEventListener()
per l'istanza del componente. Ad esempio, la seguente riga di codice consente di aggiungere un listener per l'evento
MouseEvent.CLICK
all'istanza
aButton
del componente Button:
aButton.addEventListener(MouseEvent.CLICK, clickHandler);
Il secondo parametro del metodo
addEventListener()
registra il nome della funzione,
clickHandler
, che dovrà essere chiamata quando si verifica l'evento. Questa funzione è inoltre nota come
funzione
di callback
.
-
Potete registrare più listener in un'istanza del componente.
aButton.addEventListener(MouseEvent.CLICK, clickHandler1);
aButton.addEventListener(MouseEvent.CLICK, clickHandler2);
-
Potete registrare un listener in più istanze del componente.
aButton.addEventListener(MouseEvent.CLICK, clickHandler1);
bButton.addEventListener(MouseEvent.CLICK, clickHandler1);
-
La funzione del gestore di eventi viene passata a un oggetto evento contenente le informazioni relative al tipo di evento e all'istanza da cui è stato trasmesso. Per ulteriori informazioni, vedete
Informazioni sull'oggetto evento
.
-
Il listener rimane attivo finché l'applicazione non viene terminata o finché non viene rimosso in modo esplicito usando il metodo
removeEventListener()
. Ad esempio, la seguente riga di codice consente di rimuovere il listener per l'evento
MouseEvent.CLICK
dall'istanza
aButton
:
aButton.removeEventListener(MouseEvent.CLICK, clickHandler);
Informazioni sull'oggetto evento
L'oggetto evento eredita dalla classe di oggetti Event e ha una serie di proprietà che contengono informazioni sull'evento che si è verificato, tra cui le proprietà
target
e
type
, che forniscono informazioni relative all'evento:
Proprietà
|
Descrizione
|
type
|
Una stringa che indica il tipo dell'evento.
|
target
|
Un riferimento all'istanza di componente che trasmette l'evento.
|
Quando un evento dispone di proprietà aggiuntive, queste vengono elencate nella descrizione della classe dell'evento nella
Guida di riferimento di ActionScript 3.0
per Flash Professional
.
L'oggetto evento viene generato e passato automaticamente alla funzione gestore di eventi quando si verifica un evento.
Potete usare l'oggetto evento all'interno della funzione per accedere al nome dell'evento trasmesso o al nome di istanza del componente che ha trasmesso l'evento. Dal nome di istanza potete accedere alle altre proprietà del componente. Ad esempio, il codice seguente usa la proprietà
target
dell'oggetto evento
evtObj
per accedere alla proprietà
label
dell'istanza
aButton
e visualizzarla nel pannello Output:
import fl.controls.Button;
import flash.events.MouseEvent;
var aButton:Button = new Button();
aButton.label = "Submit";
addChild(aButton);
aButton.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(evtObj:MouseEvent){
trace("The " + evtObj.target.label + " button was clicked");
}
|
|
|