Este es mi primer tip así que como podréis imaginaros, no contiene código actionscript muy complejo pero creo que el resultado es muy interesante. Quiero dar las gracias a Sisco por resolverme una duda que tenía para poder hacer estas pruebas.
El resultado que se busca en este tip es similar al de Windows Vista con sus paneles en 3D, (aunque yo nunca los haya usado en realidad), para ello he usado una clase propia llamada Panel, que tiene principalmente dos atributos:
- "info" : Contiene el MovieClip que se verá (el panel en si).
- "prof" : Que nos indicará el nivel de profundidad del panel y que nos servirá para calcular su "_alpha" y su posición en el escenario.
Las instancias de los objetos (paneles) que se encuentran en el escenario están recogidas en la matriz "obj".
Lo primero de todo es saber que el movimiento de los paneles lo activaremos mediante un botón con la siguiente función:
Código :
boton.onPress = function(){ recolocar(); }
La función recolocar tiene el siguiente aspecto:
Código :
function recolocar() { for (var i:Number = 0; i < obj.length; i++) { var o:Panel = obj[i]; o.prof++; // Modificamos su profundidad. var p:Number = o.prof % 4; // así conseguimos el ciclo {0,1,2,3,0} //de tal manera que solo hayan 4 niveles diferentes 0, 1, 2 y 3 //aunque el atributo prof crezca indefinidamente // Calculamos las posiciones destino dependiendo de la profudidad. var nuevaPosX:Number = posX + p * 20; var nuevaPosY:Number = posY + p * 10; // Movemos a esas posiciones mover(o,nuevaPosX,nuevaPosY,p); //Actualizamos la profundidad del clip o.info.swapDepths(p % 4); } // for } //recolocar
Este código es muy simple puesto que lo único que hace es actualizar la profundidad de los paneles, calcular las posiciones de los paneles según sus profundidades e invoca a la función mover con estos datos como parámetros y al final coloca cada MovieClip según su profundidad con la línea:
Código :
o.info.swapDepths(p%4);
En la función mover he usado la clase Tween de tal forma que si según su profundidad, “o” es el primer panel actualmente, lo agrandará y si no lo es, lo devolverá a su tamaño normal, su código es
Código :
function mover(o:Panel, X:Number, Y:Number, p) { // En esta función usaremos la clase Tween que nos servirá para crear interpolaciones de //movimiento y de forma desde actionscript fácilmente. // modificamos _alpha con la clase Tween para que lo haga poco a poco var talpha:Tween = new Tween(o.info, "_alpha", none, o.info._alpha, 100*(p+1)/4, 0.5, true); if (o.prof%4 == 3){ //Si es el primer panel // Crecimiento ondulatorio var tTamX:Tween= new Tween(o.info, "_xscale", Elastic.easeOut, 100, 150, 1.5, true); var tTamY:Tween = new Tween(o.info, "_yscale", Elastic.easeOut, 100, 150, 1.5, true); // Movimiento en el eje x var tX:Tween = new Tween(o.info, "_x", easeInOut, o.info._x, X+100, 0.2, true); //Movimiento en el eje y var tY:Tween = new Tween(o.info, "_y", easeInOut, o.info._y, Y+100, 0.2, true); }else{ //Si no es el primer panel // Decrecimiento ondulatorio var tTamX:Tween = new Tween(o.info, "_xscale",Elastic.easeOut,o.info._xscale,100,1.5,true); var tTamY:Tween = new Tween(o.info, "_yscale",Elastic.easeOut,o.info._yscale,100,1.5,true); //o.info._x = X; Movimiento en el eje x var tX:Tween = new Tween(o.info, "_x", easeInOut, o.info._x, X, 0.2, true); //o.info._y = Y; Movimiento en el eje y var tY:Tween = new Tween(o.info, "_y", easeInOut, o.info._y, Y, 0.2, true); } //if } //mover
Un ejemplo de este código seria:
NOTA:
Si alguno de vosotros llegara a usar este código o parte de él en una web o algo por el estilo, me gustaría mucho que lo postearais para ver como queda.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Sisco el 03 de Julio de 2007
Por Frem@n el 05 de Julio de 2007
Por Jonatan el 05 de Julio de 2007
Por matias el 26 de Julio de 2007
Me podria alguien decir como agrego 4 ventanas mas..... necesito usarlo de botonera para 8 ventanas
Por hola yo necesito hac el 09 de Agosto de 2007
Por Luismaria el 30 de Octubre de 2007
Como podría lograr que los paneles hagan esa animacion, pero solo al hacer rollOver con el mouse sobre ellos?
Gracias.
Por penHolder el 30 de Octubre de 2007
Luismaria_blog :
Como podría lograr que los paneles hagan esa animacion, pero solo al hacer rollOver con el mouse sobre ellos?
Gracias.
simplemente cambias
Código :
por esto
Código :
Por Dark el 15 de Noviembre de 2007
Por Dark el 16 de Noviembre de 2007
Por Pancho el 11 de Diciembre de 2007
Por web.master el 28 de Mayo de 2008
Por sick.fla el 23 de Julio de 2008
Por Freddie el 23 de Julio de 2008
sick.fla-blog :
Con un .FLA, lo que aprendes es a hacer copypaste. En ciertos casos es importante, pero sólo como apoyo. El tutorial está ahí para que aprendas.
Por sick.fla el 23 de Julio de 2008
Por CLAnonimo el 03 de Noviembre de 2010
Saludos cordiales.