>       Pero, realmente, ¿no sería mejor que cada clase tenga 
> sus eventos asociados y exista una buena jerarquía de 
> eventos, sin tener que recurrir a un proxy de eventos como en 
> realidad es esto?

Desde luego, pero flash tiene muchos eventos que no cumplen unas
expectativas minimas, como MovieClip o XML. Yo lo uso para eso. La tipica
clase...

import mx.utils.Delegate;
class DataObject{
        private var xml:XML;
  
        public function DataObject(){
                xml = new XML();
                xml.ignoreWhite = true;
                xml.onLoad = Delegate.create(this,handleXML);
        }
        public function handleXML(ok:Boolean){
                if(ok)parse();
        }
        public function load(url:String){
                xml.load(url);
        }
        // protected abstract
        private function parse(){};
}

Sino usas el delegate tienes 2 opciones. Las 2 con pegas.
1- Meter una referencia a lo bestia en xml:
        xml["ref"] = this;
        xml.onLoad = function(){
                this["ref"].handleXML();
        }

Que es un hack mas que otra cosa.

2- Crear una variable local y aprobecharse de que no se destruirá.
        var ref:DataObject = this;
        xml.onLoad = function(){
                ref.parse();
        }

Que esta mejor, pero el resto de variables locales que definas en la funcion
tambien se vuelven permantentes y tienes que estar pendiente de eso, sobre
todo si generas muchas instancias de esa clase.         

Tambien es muy util con el EventDispatcher de los componentes que solo
aceptan una funcion o un objeto como parametro. Si quieres una funcion sin
restricciones de nombre y en el ambito que te de la gana en un componente
solo lo puedes hacer con el Delegate. Que es para lo que lo venia usando.
Pero tambien sirven con los callbacks de toda la vida, donde tampoco podias
elegir el ambito de ejecucion.


Mmm.. No se, ¿Te he convencido? :D

Joseba Alonso
www.5dms.com
www.sidedev.net 



----------------------------------
Lista ASNativos:[email protected]
http://www.5dms.com/listas
----------------------------------

Responder a