Aquí os dejo la segunda entrega de mis periplo aprendiendo eventos. 100% recomendable para los que todavía no conocéis palabras como EventDispatcher, Delegate, Function.apply() o callback.
En la documentación de la clase, tenéis la explicación del ejemplo.

Actionscript:
  1.  
  2. /**
  3. *
  4. * com.electroduendes.ejercicios.callback.Perro
  5. * @author      Alejandro Sáncez Marcos
  6. * @version            0.1
  7. * @usage       Tutorial-ejemplo de uso de un callback
  8. *
  9. *
  10. * Es muy útil el uso de callbacks como manera de brindar a tu función de compor-
  11. * tamientos diferentes en base a parámetros o otras funciones.
  12. *
  13. * En este ejemplo, veremos cómo nuestra clase "perro" tiene que "advertir" a las
  14. * montañas de que ha ladrado (que jod##amente abstracto ejemplo!), para que ellas
  15. * reproduzcan eco. Con el tipo de dato Function, podremos pasar una función y
  16. * ejecutarla cuando queramos posteriormente con "apply".
  17. *
  18. *
  19. * Para aquellos que optan por la Orientación a Objetos en su código existen
  20. * maneras más óptimas, como el paquete EventDispatcher, disponible a partir de
  21. * la versión 7.2. Si todavía no dominas al máximo tu orientación a objetos, o
  22. * necesitas dotar de comportamiento simple basado en eventos tus clases,
  23. * este es tu ejemplo.
  24. *
  25. * Un ejemplo de su implementación sería:
  26. *
  27. * import com.electroduendes.ejercicios.callback.Perro;
  28. *
  29. * var mastin:Perro = new Perro();
  30. * var miCallback:Object = {func:eco, ambito:this, parms:[]};
  31. * function eco() {
  32. *       trace("guaaaauuu");
  33. * }
  34. * mastin.setOnEndLadrido(miCallback);
  35. * mastin.ladrar();
  36. *
  37. */
  38. class com.electroduendes.ejercicios.callback.Perro {
  39.        
  40.         //un objeto con tres atributos de tipo Function, ambito, Array
  41.         private var callback : Object = null;
  42.        
  43.         /**
  44.         * @usage                ladra
  45.         */
  46.         public function ladrar () : Void{
  47.                 trace ("guau");
  48.                 // TODO: selecciona apply y pulsa f1
  49.                 if (callback != null)
  50.                         //  despachamos la función
  51.                         callback.func.apply (callback.ambito, callback.parms);   
  52.         }
  53.         /**
  54.         *
  55.         * @usage                setter del callback: le enviamos una función para que
  56.         *                         la ejecute al fin del ladrido
  57.         * @param                callback que contiene una funcion
  58.         */
  59.         public function setOnEndLadrido (callback : Object) : Void {
  60.                 this.callback = callback;
  61.         }
  62. }
  63.  
  64.