LeoBaraldi – Ejemplos Flash, Ejemplos actionscript, Tutoriales Flash, Tutoriales actionscript, actionscript 3, curso de actionscript

Recursos y ejemplos de actionscript, Flash, AIR, Flex, CSS y HTML. Tutoriales de actionscript 2 y actionscript 3

Crear películas dinámicamente o en tiempo de ejecución, control de level “Depth”

| 1 Comment

Diego nos hace la consulta de cómo crear películas dinámicamente y en tiempo de ejecución desde actionscrip y organizar el orden de apilamiento.

Para aquellos que recién comienzan van a ver que una manera de cargar una imagen externa o swf externo es cargándolo dentro de un MovieClip el cual se comporta como un contenedor sea para imágenes o también datos.

A esta posibilidad se le suma la opción de orden de apilamiento, es decir en qué nivel se deben cargar los elementos externos. Para especificar un nivel sin dudas lo que necesitamos es organizar nuestras películas de manera que algunas quedaran mas arriba de otras según las necesidades, este proceso simplemente lo podemos hacer a mano pero como siempre el AS nos da la posibilidad de hacerlo desde código sin la necesidad de crear manualmente ninguna película.

Un ejemplo básico seria cargar una imagen jpg a nuestro escenario desde AS:

Lo primeros que hacemos indicamos donde queremos crear la película bacía, en este caso uso “this” para indicar “acá mismo”.
Lo siguiente es indicar que se cree la película “createEmptyMovieClip”, como pueden ver este necesita de dos parámetros: El primero es el nombre de instancia que recibirá dicha película, se indica entre comillas y siempre debe ser un nombre único.
El segundo parámetro es el nivel de profundidad de la película, este es un valor de tipo Number o numero por eso carece de las comillas.

El siguiente paso es muy simple, cargamos la imagen dentro del movieclip vacio “contenedor_mc.loadMovie(“foto1.jpg”);”

this.createEmptyMovieClip("contenedor_mc",10);
contenedor_mc.loadMovie(“foto1.jpg”);

Si quisiéramos cargar una segunda foto encima de la primera simplemente creamos un Nuevo contenedor y el valor de la profundidad le deberíamos pasar un número superior al contenedor anterior.

this.createEmptyMovieClip("contenedor2_mc",11);
contenedor2_mc.loadMovie(“foto2.jpg”);

En caso de que nos olvidemos de poner un valor superior y conservemos el nivel 10 lo que sucederá que la película anterior se destruirá y será reemplazada por esta nueva carga.

Ok hasta aquí todo muy bien pero que sucede cuando no sabemos qué nivel pose otra película o simplemente queremos que nuestra nueva película bacía se cree por encima de todas aquellas películas ya existentes!!! No desesperes acá la solución!

this.createEmptyMovieClip("contenedor",this.getNextHighestDepth());

como puedes ver el proceso es el mismo la diferencia está en que donde debería ir el numero de nivel fue reemplazado por “this.getNextHighestDepth()”, que en definitiva lo que nos devuelve esto es el nivel superior próximo disponible. Es decir el número de nivel superior disponible por ejemplo el nivel “12”.

Siempre yo aconsejo que por si las dudas hagan esto:

this.createEmptyMovieClip("contenedor",this.getNextHighestDepth()+1);

Aparte de irse al nivel siguiente próximo, que le sume uno mas por si las dudas!!!

Si lo que quieres es averiguar qué nivel posee una película en particular podes hacer lo siguiente:

trace(contenedor_mc.getDepth())

y en tu panel de salida te dará un numero que es el nivel que posee dicho movieclip, este es un método útil cuando estamos perdidos o necesitamos controlar si las cosas están como queremos.

Acá el código de un ejemplo así ves y el ejemplo mismo mas debajo como demo para jugar!, mucha suerte y gracias!

Actionscript:
  1. var i:Number = 1;
  2. function crarPeliculas() {
  3. this.createEmptyMovieClip("peli"+i,this.getNextHighestDepth());
  4. this["peli"+i].createTextField("my_txt",1,numeroAleatorio(0, 500),numeroAleatorio(0, 350),50,50);
  5. this["peli"+i].my_txt.border = true;
  6. this["peli"+i].my_txt.text = this["peli"+i].getDepth();
  7. i++;
  8. }
  9. //
  10. function numeroAleatorio(desde, hasta) {
  11. return desde+Math.round(Math.random()*(hasta-desde));
  12. }
  13. //
  14. boton_btn.onRelease = function() {
  15. crarPeliculas();
  16. };

NOTA: En el ejemplo al hacer clic se crea una peli nueva y en un campo de texto dentro de esa pelicula se imprime el valor de nivel que posee

Author: LeoBaraldi

Diseñador gráfico y programador en Web, con experiencia profesional en el rubro desde 1998. Experto en diseño de interfaces Frontend y Backend, sitios, portales y dispositivos móviles. Experto en estándares, CSS y HTML, amplios conocimientos en CEO. Desarrollador de sitios multi plataformas, HTML5, CSS3 y JQuery. Experto programador en Adobe Flex, AIR y ActionScript 3.0. Conocimientos en lenguajes como PHP, Javascript y bases de datos MySQL. Profesor de Diseño y Diseño Web en la Escuela Superior de Diseño Aguas de la Cañada, asesor y colaborador para medios gráficos, editoriales y revistas afines. Actualmente Jefe de Producción en Manifesto solutions.

One Comment

  1. Como puedo cargar una imagen en actionscript, mediante una palabra caliente y despues quitarla.

Deja un comentario

Required fields are marked *.

*