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

despachar un evento sólo una vez

Estas en el tema de despachar un evento sólo una vez en el foro de Flash y Actionscript en Foros del Web. Hola a todos. Tengo una duda en AS3. Resulta que si lanzo un evento varias veces: Código: dispatchEvent(new CustomEvent(CustomEvent.CUSTOM_EVENT)); dispatchEvent(new CustomEvent(CustomEvent.CUSTOM_EVENT)); dispatchEvent(new CustomEvent(CustomEvent.CUSTOM_EVENT)); El manejador ...
  #1 (permalink)  
Antiguo 24/01/2010, 17:24
 
Fecha de Ingreso: mayo-2007
Ubicación: España
Mensajes: 147
Antigüedad: 16 años, 10 meses
Puntos: 3
despachar un evento sólo una vez

Hola a todos. Tengo una duda en AS3.

Resulta que si lanzo un evento varias veces:

Código:
dispatchEvent(new CustomEvent(CustomEvent.CUSTOM_EVENT));
dispatchEvent(new CustomEvent(CustomEvent.CUSTOM_EVENT));
dispatchEvent(new CustomEvent(CustomEvent.CUSTOM_EVENT));
El manejador del evento se ejecuta tantas veces como el programa ha lanzado el evento. En este caso se ejecutará tres veces, porque el evento lo he lanzado tres veces consecutivas:

Código:
addEventListener(CustomEvent.CUSTOM_EVENT, function() {
    // esto se ejecutará tres veces
});
Lo que me gustaría conseguir es que, aunque haya lanzado el evento N veces, el manejador se ejecutase solamente una vez.

Es ésto posible?

Gracias por adelantado.
  #2 (permalink)  
Antiguo 25/01/2010, 14:50
 
Fecha de Ingreso: enero-2010
Mensajes: 25
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: despachar un evento sólo una vez

A eso lo solucionas con una "bandera", una variable que solo te sirva de marcador para saber si ya se ejecutó o no.

la declaras y la defines como falsa
var Bandera:Boolean
Bandera=false


y luego

addEventListener(CustomEvent.CUSTOM_EVENT, function() {

if(Bandera==false){
//ACA LO QUE QUIERAS HACER
Bandera=true
};
};

Esto va ha hacer que solo se ejecute una vez..

Etiquetas: eventos
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 11:46.