Comunidad de diseño web y desarrollo en internet online

¿Eliminar instancias de objetos de manera adecuada?

Citar            
MensajeEscrito el 12 Mar 2011 06:25 pm
Estimados colegas:

hace un par de días he empezado a crearme un blog http://www.coolarts.us, por favor no replicarme muchas quejas con respecto al diseño pues acabo de empezar con el y aún ni siquiera tengo claro el diseño final.

Bueno al grano, pues he creado un fondo dinámico como podréis observar. El problema es que creo que consume demasiados recursos, pues el ratón se me ralentiza y si abro 4 ventanas con la web el procesador parece que va a explotar. No soy un profesional de ActionScript ni mucho menos, es mas estoy empezando con el, por lo que creo que no elimino todo lo que debería de forma adecuada y me dejos cosas funcionando en el fondo como listeners y otras cosas.

Os voy a exponer el código, y si alguien tiene la amabilidad y el tiempo de echarle un vistazo, y decirme si debería borrar variables, listeners, bitmaps, o lo que sea que me ralentiza se lo agradecería muchísimo.

Primero he creado esta clase que me crea las líneas frontales.


crearLineas.as

Código ActionScript :

class crearLineas {
   
   private var ancho:Number;
   private var alto:Number;
   private var lineas:MovieClip;
   private var grosorLinea:Number;
   private var colorLinea:Number;
   
   private static var blanco:Number = 0xFFFFFF;
   private static var negro:Number = 0x000000;
   private static var rojo:Number = 0xFF0000;
   
   public function crearLineas (nombre:String, capa:Number, grosor:Number, color:String) {
      if (color == "rojo") {
         colorLinea = rojo;
      } else if (color == "blanco") {
         colorLinea = blanco;
      } else if (color == "negro") {
         colorLinea = negro;
      }
      
      ancho = Stage.width;
      alto = Stage.height;
      grosorLinea = grosor;
      lineas = _root.createEmptyMovieClip(nombre, capa);
      dibujarLineas();
   }
   
   private function dibujarLineas () :Void {
      lineas.lineStyle (grosorLinea, colorLinea);
      
      for (var i:Number = 0; i <= ancho; i++) {
         var v:Number = i%2;
         if (v == 0) {
            lineas.moveTo(i*grosorLinea, 0);
            lineas.lineTo (i*grosorLinea, alto);
            lineas.moveTo(0, i*grosorLinea);
            lineas.lineTo (ancho, i*grosorLinea);            
         }
      }
   }
   
   public function cambiarAlfa (alf:Number) :Void {
      lineas._alpha = alf;
   }
}

Y después he creado este código en el primer frame de la película flash

Código ActionScript :

Stage.scaleMode = "noScale";
Stage.showMenu = false;
Stage.align = "TL";

import flash.display.BitmapData;
import mx.transitions.Tween;
import mx.transitions.easing.*;

var ancho:Number = Stage.width;
var alto:Number = Stage.height;
var alfa:Tween;
var actual:Number = 1;

function crearNubes (nombre:Number, capa:Number) {
   var imagen:MovieClip = this.createEmptyMovieClip("imagen", capa - 1);
   var bitmap:MovieClip = _root.createEmptyMovieClip("bitmap" + nombre, capa);
   var nube:BitmapData = new BitmapData(ancho, alto);
   perlin(nube);
   nube.draw(imagen);
   bitmap.attachBitmap(nube, 0);
   imagen.removeMovieClip();
}

function perlin (objeto:BitmapData) :Void {   
   objeto.perlinNoise(ancho, alto, random(9) + 1, random(9) + 1, false, false, 5);
}

crearNubes(1, 2);

// crearLineas( nombre - capa - grosor - color)
var lineas:crearLineas = new crearLineas("lineas", 3, 1, "negro");
lineas.cambiarAlfa(65);

var escucha:Number;
escucha = setInterval(redibujar, 6500);
var escucha2:Number;

function redibujar () :Void {
   if (actual == 1) {
      rehacerNubes(bitmap1, 0);
      actual--;
   } else {
      rehacerNubes(bitmap0, 1);
      actual++;
   }
}

function rehacerNubes (objeto:MovieClip, nombre:Number) :Void {
      crearNubes(nombre, 1);
      alfa = new Tween(objeto,"_alpha",Regular.easeOut, 100, 0, 5, true);
      escucha2 = setInterval(cambiarProfundidad, 5000, nombre);
}

function cambiarProfundidad (capa:Number) :Void {
   if (capa == 0) {
      bitmap1.removeMovieClip();
      bitmap0.swapDepths(2);
   } else {
      bitmap0.removeMovieClip();
      bitmap1.swapDepths(2);
   }   
   clearInterval(escucha2);
}


var redimension:Object = new Object();

redimension.onResize = function() :Void{
   clearInterval(escucha);
   bitmap1.removeMovieClip();
   bitmap2.removeMovieClip();
   crearNubes(1, 2);
   escucha = setInterval(redibujar, 6000);
}


Stage.addListener(redimension);

Y nada, lo dicho, si alguien es tan amable de ayudarme le estaría eternamente agradecido.

Un saludo a tod@s.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 12 Mar 2011 06:28 pm
Creo que no puedo editar el mensaje, y por error la url de mi blog ha cogido la coma como parte de ella.

La url correcta es: http://www.coolarts.us

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 14 Mar 2011 02:18 pm
2 días on y ni un comentario. ¿Quiere eso decir que nadie ha tenido 10 minutillos para echarle un vistazo al código? ó ¿Que le habéis echado un vistazo al código y no habéis encontrado fallos en el borrado de listeners, variables, etc...?

Por favor que alguien me diga algo.

Un saludo a tod@s.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 16 Mar 2011 09:50 am
Bueno, ni una respuesta en 4 días, veo que nadie tiene tiempo de echarle un vistazo a esto.

Muchas gracias de todas maneras,
Un saludo a todos.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome

 

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