Foros del Web » Creando para Internet » Flash y Actionscript »

Argumentos dentro de addEventListener

Estas en el tema de Argumentos dentro de addEventListener en el foro de Flash y Actionscript en Foros del Web. Como puedo enviar argumentos dentro de un addEventListener en As3. Tengo el siguiente codigo di1.addEventListener(MouseEvent.MOUSE_OVER,scalar) ; function scalar(event:Event):void { event.currentTarget.scaleX=3; } donde d1 es un ...
  #1 (permalink)  
Antiguo 14/08/2010, 12:25
Avatar de johnybravo  
Fecha de Ingreso: mayo-2008
Mensajes: 27
Antigüedad: 16 años, 6 meses
Puntos: 1
Argumentos dentro de addEventListener

Como puedo enviar argumentos dentro de un addEventListener en As3.

Tengo el siguiente codigo

di1.addEventListener(MouseEvent.MOUSE_OVER,scalar) ;

function scalar(event:Event):void {
event.currentTarget.scaleX=3;
}

donde d1 es un objeto.

Esto permite agrandar la imagen del objeto 3 veces. Como haría para enviar la escala (3 u otro valor) como argumento dentro de la función y así luego enviar otras propiedades como color, etc?

Gracias
  #2 (permalink)  
Antiguo 15/08/2010, 02:48
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Argumentos dentro de addEventListener

saludos
bueno, pues yo conozco 2 opciones

0. hacer uso de una clase intermedia para permitir el envio de parámetros en el addEventListener, la clase es esta

Código actionscript:
Ver original
  1. // (c) 2007 Ian Thomas
  2. // Freely usable in whatever way you like, as long as it's attributed.
  3. package net.wildwinter{
  4.  
  5.     public class Callback{
  6.  
  7.     // Create a wrapper for a callback function.
  8.     // Tacks the additional args on to any args normally passed to the
  9.     // callback.
  10.         public static function create(handler:Function,...args):Function{
  11.  
  12.             return function(...innerArgs):void{
  13.                 handler.apply(this,innerArgs.concat(args));
  14.             }
  15.  
  16.         }
  17.     }
  18. }

y para usarla sería algo así

Código actionscript:
Ver original
  1. mc.addEventListener(MouseEvent.MOUSE_UP, Callback.create(plegar, true));
  2.  
  3. function plegar(event:MouseEvent, valor:Boolean):void{
  4.     trace(event);   //Devuelve [MouseEvent type="mouseUp" ...]
  5.     trace(valor);   //Devuelve true
  6. }

esta me paece excelente

1. crear manualmente una función puente, luego que llegue a la función del mouseEvent,
así pues actualmente tienes la función scalar, y allí escalas el objeto actual sobre el que se dio clic, pues bien, en vez de escalarlo directamente, se tendría condiciones, algo así:

Código actionscript:
Ver original
  1. function scalar(event:Event):void {
  2. event.currentTarget.name = "uno"? valorescala = 3 : null; //y asi n if o if del otro modo
  3. //finalmente función que si hara la escala
  4. scalafinal(event.currentTarget, valorescala);
  5. }
  6.  
  7. function scalafinal(mc:MovieClip, val:Number):void{
  8. mc.scaleX = val;
  9. }

espero que alguno se ajuste
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 15/08/2010, 07:11
 
Fecha de Ingreso: abril-2008
Mensajes: 613
Antigüedad: 16 años, 7 meses
Puntos: 22
Respuesta: Argumentos dentro de addEventListener

Hola,
Puedes declarar la variable de ESCALA, fuera de función y luego la implementas cada vez o
le pones un tope. Sería algo así:

var escala:Number=1;
di1.addEventListener(MouseEvent.MOUSE_OVER,scalar) ;

function scalar(event:Event):void {
escala +=1;
event.currentTarget.scaleX=escala;
}

Saludos
__________________
Compartir es vivir
www.programador-php.com
  #4 (permalink)  
Antiguo 17/08/2010, 08:41
Avatar de johnybravo  
Fecha de Ingreso: mayo-2008
Mensajes: 27
Antigüedad: 16 años, 6 meses
Puntos: 1
Busqueda Respuesta: Argumentos dentro de addEventListener

Gracias por responder, esta es la solución que encontré y que funciona correctamente:

di1.addEventListener(MouseEvent.CLICK,function(){s calar(escala,di1)});


function scalar(escala,cual):void
{
cual.scaleX=escala;
}

Etiquetas: argumentos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:38.