Modello a eventi e callback a confronto

Valutate la possibilità di utilizzare semplici callback anziché il modello a eventi.

Il modello a eventi di ActionScript 3.0 si basa sul concetto di invio degli oggetti. È orientato agli oggetti e ottimizzato per il riutilizzo del codice. Il metodo dispatchEvent() scorre ciclicamente l'elenco dei listener e chiama il metodo del gestore di eventi per ogni oggetto registrato. Tuttavia, uno degli svantaggi del modello a eventi consiste nel fatto che possono essere creati molti oggetti nell'arco della vita operativa dell'applicazione.

Immaginate di dover inviare un evento dalla linea temporale per indicare la fine di una sequenza di animazione. Per eseguire la notifica, potete inviare un evento da un fotogramma specifico della linea temporale, come illustrato dal codice seguente:

dispatchEvent( new Event ( Event.COMPLETE ) );

La classe Document può intercettare l'evento con la seguente riga di codice:

addEventListener( Event.COMPLETE, onAnimationComplete );

Per quanto questo tipo di approccio sia corretto, l'uso del modello a eventi nativo può risultare più lento e consumare più memoria rispetto al ricorso a una funzione di callback tradizionale. Gli oggetti evento devono essere creati e allocati in memoria, con un conseguente rallentamento delle prestazioni. Ad esempio, quando si intercetta l'evento Event.ENTER_FRAME, viene creato un nuovo oggetto evento su ciascun fotogramma per il gestore di eventi. Le prestazioni possono risultare particolarmente lente con gli oggetti di visualizzazione, a causa delle fasi di cattura e bubbling, che possono appesantire l'elaborazione se l'elenco di visualizzazione è complesso.