Nozioni di base sulla gestione degli eventiFlash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive Si considera un evento una qualsiasi attività che avviene nel file SWF e che riveste un qualche interesse per il programmatore. La maggior parte dei file SWF supporta, ad esempio, qualche tipo di interazione con l'utente, dalla semplice risposta a un clic del mouse fino a reazioni molto più complesse, come accettare ed elaborare i dati inseriti in un modulo. Tutte le interazioni di questo tipo che avvengono tra l'utente e il file SWF sono considerate eventi. Inoltre, si possono verificare degli eventi anche in assenza di interventi diretti da parte dell'utente; ad esempio quando termina il caricamento di dati da un server o quando una fotocamera collegata al computer diventa attiva. In ActionScript 3.0, ogni evento è rappresentato da un oggetto evento, cioè da un'istanza della classe Event o di una delle sue sottoclassi. Oltre a memorizzare informazioni relative a un evento specifico, un oggetto evento contiene metodi che facilitano la manipolazione dell'oggetto stesso. Quando Flash Player o AIR rileva, ad esempio, un clic del mouse l'applicazione crea un oggetto evento che rappresenta quel particolare evento clic del mouse. Dopo aver creato un oggetto evento, Flash Player o AIR invia l'oggetto, vale a dire lo trasmette, all'oggetto che costituisce il destinatario dell'evento. Un oggetto che funge da destinazione per un oggetto evento inviato viene definito destinatario dell'evento. Quando, ad esempio, una fotocamera collegata diventa attiva, Flash Player invia un oggetto evento direttamente all'oggetto che rappresenta la fotocamera, vale a dire al destinatario dell'evento. Tuttavia, se il destinatario dell'evento è presente nell'elenco di visualizzazione, l'oggetto evento viene fatto scorrere attraverso la gerarchia dell'elenco di visualizzazione finché non raggiunge il destinatario designato. In alcuni casi, l'oggetto evento ripercorre il suo cammino in senso inverso e risale la gerarchia dell'elenco di visualizzazione. Questo attraversamento nei due sensi della gerarchia dell'elenco di visualizzazione è denominato flusso di eventi. L'aggiunta di listener di eventi al codice permette di “catturare” gli oggetti evento. I listener di eventi sono infatti funzioni o metodi scritti per rispondere a eventi specifici. Per fare in modo che il programma risponda agli eventi, è necessario aggiungere dei listener di eventi al destinatario dell'evento o agli oggetti dell'elenco di visualizzazione che fanno parte del flusso di eventi dell'oggetto. Il codice per la creazione di listener di eventi deve sempre seguire questa struttura di base (gli elementi in grassetto sono segnaposti modificabili a seconda del caso specifico): function eventResponse(eventObject:EventType):void
{
// Actions performed in response to the event go here.
}
eventTarget.addEventListener(EventType.EVENT_NAME, eventResponse);
Questo esempio di codice esegue due compiti. Innanzi tutto definisce una funzione, ovvero specifica le azioni che devono avvenire in risposta all'evento. In secondo luogo, chiama il metodo addEventListener() dell'oggetto source, in pratica associando la funzione all'evento, in modo che quando si verifica l'evento vengono attivate le azioni descritte nella funzione. Quando l'evento si verifica, il destinatario dell'evento esamina l'elenco delle funzioni e dei metodi registrati come listener dell'evento e chiama ognuno passando l'oggetto evento come parametro. Per creare il proprio listener di eventi, è necessario modificare quattro valori in questo codice. Per cominciare, sostituite il nome della funzione con il nome che desiderate usare (la modifica deve essere applicata in due punti in corrispondenza di eventResponse). In secondo luogo, specificate il nome della classe dell'oggetto inviato dall'evento che intendete monitorare (EventType nel codice) e specificate la costante appropriata per l'evento specifico (EVENT_NAME nell'elenco). Quindi, effettuate una chiamata al metodo addEventListener() sull'oggetto che invierà l'evento (eventTarget nel codice). Infine, in via facoltativa, cambiate il nome della variabile utilizzata come parametro della funzione (eventObject nel codice). Concetti e termini importantiL'elenco di riferimento seguente contiene termini importanti che vengono citati durante la scrittura di routine di gestione degli eventi:
|
|