Gestione degli eventi

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"); 
}