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.