Comunidad de diseño web y desarrollo en internet online

Eventos y Performance: AS3

Citar            
MensajeEscrito el 12 Ago 2008 02:36 am
Buenas muchachos. La duda del dia es la siguiente...
Como ya sabrán uds en AS3 es muy productivo recomendable e indicado trabajar con Eventos y como ya me estoy haciendo moooy amigo de los events queria saben en que casos es recomendable o no, usar removeEventListeners() - stopInmediatePropagation().
En cosas muy sencillas talvez no haga falta, pero en una aplicacion donde casi hay mas eventos por clase que variables tal vez si. Eventos de todo tipo llendo y viniedo a la clase principal, cargas y descargas de datos, mouse, teclado, timers, actualizaciones, conexiones exitosas o no haciendo, peticiones todo esto controlado por eventos. A veces he tenido que valerme de un stopInmediatePropagation() para cortar con un tsunami de eventos me mataba la aplicacion (claro que habia un error y fue corregido). :lol:
En sintesis... quiero saber si estas practicas ayudan en algo o no a la performance y rendimiento de una aplicacion para asegurase de que el evento una vez recibido por el listener MUERA completamente y no siga consumiendo la noble memoria y acumulandose a otros eventos en desuso.

Nada mas y gracias!!

Creattive.

Por Creattive

120 de clabLevel

1 tutorial

Genero:Masculino  

Adobe AIR/Flex developer

firefox
Citar            
MensajeEscrito el 12 Ago 2008 10:14 am
Pues claro que ayuda, en este momento estoy desarrolando una aplicación con papervision3D y tenía dentro de una función una evento timerEvent de una variable Timer de scope global, bueno cuando esta función se ejecutaba más de 5 o 6 veces las animaciones iban muy lento. Yo pensé que no tendría nada que ver el timerEvent, pero como la variable era global cada vez que creaba un nuevo timerEvent el anterior no se eliminaba, en mi opinión esto pasaba al garbage collection automáticamente, pero leyendo un poco el Essential AS descubrí que no era así, así que decidí eliminar (si existía) el timerEvent antes de crear el próximo y la aplicación se animó a las mil maravillas.

Hay eventos que no se deben eliminar porque van a estar el mayor tiempo de tu aplicación así que se quedan, pero los que van a demorar un tiempo sin ser utilizados los eliminas y después los vuelves a crear, y si necesitas crear un evento de igual tipo a un objeto, elimina el anterior, aumenta el rendimiento de tu aplicación te lo aseguro.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 12 Ago 2008 06:19 pm
Gracias por comentarme tu caso, ahora hay forma de saber cuales son los eventos que me van quedando colgados ?
Seguramente haya algunos que no son suficientes como para tirar abajo la aplicacion, pero si puediera elminiarlos seguramente habria menos cosas inecesarias en memoria.

Bueno voy a empezar a remover los listeners una vez capturados esos eventos y te cuento
:wink:

Creattive

Por Creattive

120 de clabLevel

1 tutorial

Genero:Masculino  

Adobe AIR/Flex developer

firefox
Citar            
MensajeEscrito el 12 Ago 2008 09:39 pm
En este ejemplo después de presionado chequeo si el botón tiene un evento de Click, de ser así lo elimino:

Código :

boton.addEventListener(MouseEvent.CLICK, doSomething);

function doSomething(evt:MouseEvent):void{
   
   if(boton.hasEventListener(MouseEvent.CLICK)){
      
      boton.removeEventListener(MouseEvent.CLICK, doSomething);
      trace("se elimino el event listener");
      
   }
   
}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.