Jan 20
Pasar parámetros en un Delegate de ActionScript3
AS3. Autor: xleon Add comments
Haciendo de las mÃas en AS3, lo primero que eché en falta fueron los delegates de AS2 que podÃan pasar parámetros:
[as]unboton.onRelease = Delegate.create(ambito, ambito.funcion, param1, param2,….paramN);[/as]
o también…
unboton.addEventListener("evento", Delegate.create(ambito, ambito.funcion, param1, param2,....paramN) );
Pues algo tan sencillo no he podido hacer en AS3, y vi que existÃan otras maneras de hacerlo, pero ninguna tan clara y fácil como la forma que usábamos en as2. Hasta que encontré esta maravillosa página donde dan la solución al problema con una simple clase “Callback” que sirve exactamente para estos menesteres. A partir de ahora, la utilizaré siempre ;)
Un ejemplo de uso en as3:
package { import xFramework.utils.Callback; import flash.display.Sprite; import flash.display.Shape; import flash.events.MouseEvent; import flash.events.Event; public class CallbackTest extends Sprite { public function CallbackTest() { var s:Shape = new Shape(); s.graphics.beginFill(0x000000); s.graphics.drawCircle(100, 100, 10); s.graphics.endFill(); var cont : Sprite = new Sprite(); cont.addChild(s); cont.addEventListener(MouseEvent.CLICK, Callback.create(onClicked, cont, "esto funciona")); addChild(cont); } private function onClicked(event:Event, cont:Sprite, str2:String):void { trace(cont, str2); } } }

January 21st, 2008 at 12:08 pm
También puedes usar esto:
Boton1_bt.addEventListener(MouseEvent.CLICK,function(){Imprimir(1)});
Boton2_bt.addEventListener(MouseEvent.CLICK,function(){Imprimir(2)});
function Imprimir(numero){
trace(”Se ha elegido el boton ” + numero);
}
Y también puedes usar el target.
January 21st, 2008 at 6:47 pm
Me gusta esa opción, pero la del Callback me parece más limpia. De todas formas, es bueno saberlo. Gracias!
August 21st, 2008 at 6:48 pm
Carlos te felicito muy buen tip