Perfecto!!
limpio, sencillo y funciona a la perfeccion, como a mi me gustan estas cosas 
;)
Entre tanta prueba, no habia escrito bien el Delegate, me extrañaba que no 
funcionase.
Muchas gracias, tomo nota de la lección.


----- Original Message ----- 
From: "Joseba Alonso" <[EMAIL PROTECTED]>
To: "'Lista dedicada a Actionscript'" <[email protected]>
Sent: Friday, May 11, 2007 1:41 PM
Subject: Re: [ASNativos] Funciones referenciadas y ambito


Corrijo, el Delegate es como lo ha escrito Julio (añádele también el import
como he puesto yo)

Un saludo,

Joseba Alonso Pérez
www.sidedev.net
www.5dms.com


> -----Mensaje original-----
> De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En
> nombre de Joseba Alonso
> Enviado el: viernes, 11 de mayo de 2007 13:32
> Para: 'Lista dedicada a Actionscript'
> Asunto: Re: [ASNativos] Funciones referenciadas y ambito
>
> Hacer una referencia a un método y ejecutarlo son dos cosas diferentes,
> creo
> que te estas liando (normal). La cuestión es la siguiente, una función
> ( o
> método, que es lo mismo en este caso) se ejecuta en el ámbito desde el
> que
> es llamado, te pongo un ejemplo:
>
> // Codigo escrito en _root
>
> function foo(){
> trace(this.toString());
> }
>
> var obj:Object = new Object();
> obj.toString = function(){
> trace("objeto");
> }
>
> // Ahora llamo a foo desde _root directamente
> // por tanto la referencia this (ámbito) es _root
> foo(); // _level0
>
> // Ahora lo llamo desde el objeto 'obj' por tanto la referencia
> // cambia a 'obj'
>
> obj.foo = foo;
> obj.foo(); // objeto
>
>
> En AS3 en los dos casos debería de salir _root (si no me equivoco)
> mientras
> que en AS1/AS2 el ámbito del objeto, y por tanto la referencia a this a
> cambiado dependiendo desde donde a sido llamado si desde _root o desde
> obj.
>
> Como decía Julio es un tema extremadamente complicado, yo diría que sin
> duda
> es el aspecto mas complicado del lenguaje...
>
> En tu caso, la solución que aportas sigue siendo invalida ya que al
> hacer
> _parent vuelves a depender de donde estes ejecutando la función. Te
> propongo
> la siguiente solución.
>
> import mx.utils.Delegate;
>
> var bajarVolumen:Function =
> Delegate.create(_parent,_parent.miSonido.bajarVolumen);
>
> bajarVolumen();
>
> Un saludo,
>
> Joseba Alonso Pérez
> www.sidedev.net
> www.5dms.com
>
>
> > -----Mensaje original-----
> > De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En
> > nombre de Ivan
> > Enviado el: viernes, 11 de mayo de 2007 13:05
> > Para: Lista dedicada a Actionscript
> > Asunto: Re: [ASNativos] Funciones referenciadas y ambito
> >
> > Seguramente lo haga con un metodo estatico, pero me interesa mucho el
> > tema y
> > me surgen unas dudas:
> > No entiendo muy bien la diferencia entre "hacer referencia a un
> metodo"
> > y
> > poder ejecutarlo, aunque como dice Joseba, me parece un poco lioso
> que
> > cambie el ambito, si es capaz de llegar a la función y ejecutarla.
> > Lo pongo asi, porque en la peli hago muchas referencias al objeto de
> > sonido,
> > pero no tiene por que ser el mismo, y quiero almacenarlo en una
> > variable
> > para acceder a él con mas facilidad. Lo que ahora he hecho es esto,
> en
> > la
> > peli de flash:
> >
> > var bajarVolumen:Function = function () {
> >     _parent.miSonido.bajarVolumen();
> > };
> >
> > aunque me gustaria hacer algo como
> >
> > var bajarVolumen:Function = Delegate.create(_parent.miSonido,
> > bajarVolumen);
> >
> > que me parece mucho mas elegante, pero no consigo que llege bien a la
> > funcion.
> >
> > Comentas los punteros.... pero entiendo que eso no existe en flash,
> > corrigeme si me equivoco.
> > Un saludo.
> >
> >
> >
> > ----- Original Message -----
> > From: "Joseba Alonso" <[EMAIL PROTECTED]>
> > To: "'Lista dedicada a Actionscript'" <[email protected]>
> > Sent: Friday, May 11, 2007 11:39 AM
> > Subject: Re: [ASNativos] Funciones referenciadas y ambito
> >
> >
> > > Extraño no es.
> > > Afortunadamente, todo funciona como debe funcionar. Cuando haces la
> > > asignacion de al método "bajarVolumen" lo que asignas es eso, una
> > > referencia al método, pero no al objeto que la posee. No la
> > > sobreescribes (¿?). Lo extraño es que quieras hacer eso. Creo que
> te
> > > has
> > > hecho un lío creyendo que apuntando a la función, ejecutarás la
> > función
> > > de ESA instancia, y no. Cuando la ejecutas te devuelve,
> > diligentemente
> > > ella, el valor de "this" en su nuevo ámbito, es decir el objeto que
> > > "posee" la función, en tu caso el mute_mc.
> > >
> > > Punteros para que os quiero...
> >
> >
> > Yo no diría afortunadamente :). Los ámbitos tal y como los ha tratado
> > siempre Flash siempre han sido muy oscuros. El hecho de que el ámbito
> > de una
> > función cambie dependiendo de desde donde se llame es algo que da
> > cierta
> > flexibilidad, sin duda, pero en la gran mayoría de los casos
> introduce
> > errores y malentendidos. Vamos, no hay proyecto donde no utilice mil
> > veces
> > el Delegate para evitar ese comportamiento. De hecho en AS3 por fin
> han
> > introducido los famosos "closures" y ya no ocurre esto. El ámbito de
> un
> > método/función lo determina donde está definido, no de donde se
> llama.
> > Para
> > mi tiene bastante más lógica así... Es una opinión personal en todo
> > caso ;)
> >
> > Un saludo,
> >
> >
> > Joseba Alonso Pérez
> > www.sidedev.net
> > www.5dms.com
> >
> >
> >
> >
> >
> > -----------------------------------------------------
> > ASNativos
> > www.5dms.com
> > subscripciones/desubscripciones
> > http://asnativos.5dms.com
> > -----------------------------------------------------
> >
> >
> > -----------------------------------------------------
> > ASNativos
> > www.5dms.com
> > subscripciones/desubscripciones
> > http://asnativos.5dms.com
> > -----------------------------------------------------
>
>
> -----------------------------------------------------
> ASNativos
> www.5dms.com
> subscripciones/desubscripciones
> http://asnativos.5dms.com
> -----------------------------------------------------


-----------------------------------------------------
ASNativos
www.5dms.com
subscripciones/desubscripciones
http://asnativos.5dms.com
-----------------------------------------------------


-----------------------------------------------------
ASNativos
www.5dms.com
subscripciones/desubscripciones
http://asnativos.5dms.com
-----------------------------------------------------

Responder a