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
-----------------------------------------------------