Jan 20
Pasar parámetros en un Delegate de ActionScript3
AS3. Autor: xleon 3 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); } } }
