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!
-
var i:Number = 1;
-
function crarPeliculas() {
-
this.createEmptyMovieClip("peli"+i,this.getNextHighestDepth());
-
this["peli"+i].createTextField("my_txt",1,numeroAleatorio(0, 500),numeroAleatorio(0, 350),50,50);
-
this["peli"+i].my_txt.border = true;
-
this["peli"+i].my_txt.text = this["peli"+i].getDepth();
-
i++;
-
}
-
//
-
function numeroAleatorio(desde, hasta) {
-
return desde+Math.round(Math.random()*(hasta-desde));
-
}
-
//
-
boton_btn.onRelease = function() {
-
crarPeliculas();
-
};
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
30 noviembre, 2007 at 12:04 pm
Como puedo cargar una imagen en actionscript, mediante una palabra caliente y despues quitarla.