Laish, lo voy a tratar de hacer despacio, pero te pido que NO te quedes sólo con el código final (porque si no va a ser una pérdida de tiempo)
Cuando escribimos
Código ActionScript :
stage.addEventListener(MouseEvent.CLICK,addchild);
Le decimos que, cada vez que se haga un click con el ratón ejecutará la funcion "addchild". Así que podemos escribir
Código ActionScript :
stage.addEventListener(MouseEvent.CLICK,addchild);
function addchild(e:Event){
trace("hago algo");
}
Te voy a cambiar el nombre de la función ya que existe el método addChild -aunque no haya problemas porque AS distingue mayúsculas y minúsculas no me gusta.
Cogiendo un poco el código de Jorge
Código ActionScript :
stage.addEventListener(MouseEvent.CLICK,onMouseClick); //<--he llamado a la función onMouseClick
function onMouseClick(e:Event){ //por eso la escribo aquí, pero la podía llamar "porompompero"
var ldr:Loader = new Loader()
var urlReq:URLRequest = new URLRequest("algun.swf");
ldr.load(urlReq);
ldr.x=Math.random()*350
ldr.y=Math.random()*300
addChild(ldr);
}
Vemos que, cada vez que pulsemos con el ratón aparecerá "algun.swf" en pantalla. Les he cambiado la posición a los loaders (vamos, su propiedad "x" y su propiedad "y") de modo aleatorio. Me explico
Math.random() devuelve un número decimal entre 0 y 1, al multiplicarlo por 350 y 300 respectivamente tendremos valores entre 0 y 350 y entre 0 y 300. Al igualar la "propiedad" x de un loader -o de un MC o de un Sprite o de .... - a un valro, hacemos que coja dicho valor.
¡pero SIEMPRE es el mismo!
Vale, ahora entra tu "array" en acción.
Código ActionScript :
//declaramos el array aquí
var array:Array = Array("gema1.swf", "gema2.swf", "gema.swf2");
//declaramos una variable que va a ser el "index".
var index:int=0;
stage.addEventListener(MouseEvent.CLICK,onMouseClick); //<--he llamado a la función onMouseClick
function onMouseClick(e:Event){
var ldr:Loader = new Loader()
var urlReq:URLRequest = new URLRequest(array[index]);
ldr.load(urlReq);
ldr.x=Math.random()*350
ldr.y=Math.random()*300
addChild(ldr);
index++
}
Observa que el cambio es sólo que ahora buscamos "array[index]" en lugar de "algun.swf". Claro, por eso debemos declarar una variable "index" (que al principio vale 0 porque los arrays van de 0 al número de elementos que tenga el array menos 1) Así
array[0] es igual a "gema1.swf"
array[1] es igual a "gema2.swf"
y
array[2] es igual a "gema3.swf"
Vale, ¿qué hacemos cuando se nos han acabado los elementos del array?
Una opción es que ya no ocurra nada cuando se pulse un click
Código ActionScript :
//declaramos el array aquí
var array:Array = Array("gema1.swf", "gema2.swf", "gema.swf2");
.....
function onMouseClick(e:Event){
var ldr:Loader = new Loader()
.....
addChild(ldr);
index++
//aquí le ponemos la condición
if (index>=array.length){
stage.removeEventListener(MouseEvent.CLICK,onMouseClick);
}
}
Sí, igual que le decimos a flash que "esté atento a cuando se hace un click" con addEventListener, le decimos que "deje de estar atento" con removeEventListener.
Otra opción es hacer que vuelva a repetir el ciclo
Código ActionScript :
//declaramos el array aquí
var array:Array = Array("gema1.swf", "gema2.swf", "gema.swf2");
.....
function onMouseClick(e:Event){
var ldr:Loader = new Loader()
.....
addChild(ldr);
index++
index=index%array.length;
}
Hemos usado el "operador módulo" (que devuelve el resto de una división) para que index vaya valiendo 0,1,2,0,1,2,0,1,2...