Flash ralentizado
Buenas a todos, a ver si me podéis echar una mano con algo que me esta sacando ya de mis casillas...
Estoy terminando de construir una web en flash, hay un motor principal que te permite controlar la carga externa de archivos o textos desde una administración para no tener que estar editandolo constantemente. El funcionamiento se basa en dos movieclips generales que van cargando el contenido primero en el A, luego en el B, luego en el A y asi sucesivamente para crear un efecto de desvanecimiento.
Bien, el problema reside en la seccion "Alojamientos" o "AHCT>Nuestros asociados" (que en realidad son la misma sección pero con la info estructurada distinta). Nada más entrar, cuando los susodichos clips aun no han contenido nada, si cargamos esas secciones, van de escandalo, muy fluidas (se puede comprobar al poner el raton encima de la imagen que sale un ticker), pero cuando la volvemos a cargar al tercer clic o más, se ralentiza, ese ticker se nota como va a trompicones....
En el Stage no tengo apenas clips, las secciones anteriores las elimino... los fades los hago con bitmapData... enfin, que me parece muy raro, os agradezco cualquier comentario!!
JaviBola
Solucionado (entre comillas)...
he hecho un trace masivo a los movieclips de carga, ya que ahi debería estar el problema y asi ha sido... Cuando hacias rollOver a los botones de la sección, el fondo se desenfocaba creando un efecto muy atractivo. Los clips recien creados no contienen ninguna información, pero en el momento que se carga algo, adquieren una propiedad que se queda residual de la libreria tween "__special_blur_y__ ; __special_blur_x__". No se que tipo de variable son y no me deja eliminarlas, asi que he optado por prescindir del blur y va muy fino, como debe ser.
Gracias por vuestros comentarios xavib y Odrakir. Un saludo.
JaviBola
Bien, es as2 pq se comenzó el proyecto hace un tiempo... El funcionamiento es asi:
- Se llama a la carga,
- A la sección anterior le hago un Draw y la elimino de la pelicula,
- Se carga la sección nueva
- Se elimina el bitmap creado anteriormente.
Lo verdaderamente raro es que funcione fluido cuando se carga por primera vez y luego deje de ser así. Puede comprobarse como cuando se descarga la sección, las pelicula se vuelve rapida de nuevo...
JaviBola
No, he revisado eso de cabo a rabo, no me gusta dejar esos flecos sueltos.... He pensado que igual se quedaba algo residual en los clips, y por ello en vez de descargar las peliculas, las elimino y las vuelvo a crear con las cargas.... Por cierto, estoy usando la libreria Tween por si a lo mejor influye....
Tnx xavib.
Odrakir
Está claro que hay algo que no eliminas bien cuando cambias de sección. Es AS3? Si es así recorre todo el código y donde veas un "add..." on un "new" fíjate si eso no tendrás que eliminarlos después.
Bueno, en realidad no quitas cosas de memoria directamente, pero sí las marcas como que ya no las usas para que flash las elimine cuando le de la gana.
Como norma general si hago esto:
micosa = new Cosa();
micosa.addEventListener(Cosa.MIEVENTO, miFuncion, false, 0, true);
addChild(micosa);
Lo eliminaría así:
micose.dispose(); //llamada a un método que eliminaría el contenido de Cosa
removeChild(micosa);
micosa.removeEventListener(Cosa.MIEVENTO, miFuncion);
micosa = null;
Así te aseguras que nada queda coleando por ahí.
También ojo con los setInterval, enter_frames y demás.
Una cosa, el último true en el addEventListener hace que utilice una referencia debil al objeto. Lo cual quiere decir que si el objeto desaparece, el evento podrá ser borrado sin necesidad de llamar al removeEventListener. Eso sí, esto es solo por si acaso, lo mejor es que aún así llames al removeEventListener.
xavib
¿Es posible que tengas onenterframes o setintervals que no eliminas?