Comunidad de diseño web y desarrollo en internet online

aleatoria de jpgs al hacer click con mouse en un mismo fla

Citar            
MensajeEscrito el 15 Sep 2009 07:07 pm
hello! me gustaria crear un codigo en as3, cuento un poco...me gustaria hacer que en una pelicula, segun yo vaya haciendo click aparezcan diferentes graficos (jpg,swf, bmp....) con la condicion de que se queden en el stage y que tengan una carga aleatoria, para que al final la gente que lo visite se lo pueda imprimir..
lo que estoy intentando construir es algo parecido a www.jacksonpollock.org pero sin API...
me pasado horas buscando algun codigo que me ayude pero los que encuentro o estan en as2 o no se adaptan a mis espectativas
alguien me ayuda??? gracias!!

Por laish

5 de clabLevel



 

msie7
Citar            
MensajeEscrito el 16 Sep 2009 12:01 pm
Para cargar algo y hacerlo aparecer en el escenario:

Código ActionScript :

var ldr:Loader = new Loader()
var urlReq:URLRequest = new URLRequest("algun.swf");
ldr.load(urlReq);
addChild(ldr);


bmp no puedes cargar en Flash. A partir de repetir este bloque y según los conocimientos de base que tengas (por ejemplo, hacer un array de los recursos a cargar, o ponerlos en un XML) podrás ir completando tu proyecto

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Sep 2009 01:33 pm
hello...gracias por ayudarme ... lo que quiero combinar es estos parametros:

stage.addEventListener(MouseEvent.CLICK,addchild);
var array:Array = Array("gema1.swf", "gema2.swf", "gema.swf2");
miArray = new Array();
var ldr:Loader = new Loader()
var urlReq:URLRequest = new URLRequest("algun.swf");
ldr.load(urlReq); addChild(ldr);


a ver si alguien me hecha una mano ya que se lo basico...el codigo este se que es un lio...jejeje....please

Por laish

5 de clabLevel



 

msie7
Citar            
MensajeEscrito el 16 Sep 2009 02:26 pm
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...

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Sep 2009 03:08 pm
muchisimas gracias!!!! gracias.....creo que me acabas de dar una clase magistral en esto de as3 de verdad... muchisimas gracias!!!!

una cosita lo que quiero que sea aleatorio con " Math.random() " quiero que sea el array...
por lo otro esta genial ... lo que pasa es que me dan errores ....

1137: Número de argumentos incorrecto. No se esperaba más de 1.
var array:Array = Array("gema1.swf", "gema2.swf", "gema.swf");
Warning: 1112: El comportamiento de Array(x) es el mismo que el de la nueva Array(x). Para convertir un valor en tipo Array, utilice la expresión "x as Array"en vez de Array(x).

( he intentado cambiar "var index:int=0;" por "var index:int=2;" y sigue dando error....


este seria mi codigo...: aver si esta bien

var array:Array = Array("gema1.swf", "gema2.swf", "gema.swf2");
var index:int=0;
array=Math.random()*350

stage.addEventListener(MouseEvent.CLICK,onMouseClick);
function onMouseClick(e:Event){
var ldr:Loader = new Loader()
var urlReq:URLRequest = new URLRequest(array[index]);
ldr.load(urlReq);
ldr.x=mouseX;
ldr.y=mouseY;
addChild(ldr);
index++
index=index%array.length;
}

Por laish

5 de clabLevel



 

msie7
Citar            
MensajeEscrito el 16 Sep 2009 03:36 pm
es que le falta un "new" es

Código ActionScript :

var array:Array=new Array("gema1.swf","gema2.swf","gema3.swf")


Vale, esto hace que salgan siempre en el mismo orden. Para evitarlo, una vez definido el array lo tienes que desordenar.

Código ActionScript :

var array:Array=new Array("gema1.swf","gema2.swf","gema3.swf")
//desordeno el array
//si lo quieres comprobar, pongamos un trace al principio y al final
trace(array)
for (var i:int=0;i<array.length;i++){
    var tmp:String=array[i];
    var j:int=Math.floor(array.length*Math.random())
    array[i]=array[j]
    array[j]=tmp
}
//Ahora está desordenado
trace(array)

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Sep 2009 03:48 pm
mil gracias...............todo ok!!!! wuahhhh mil gracias!!!!!

Por laish

5 de clabLevel



 

msie7
Citar            
MensajeEscrito el 03 Dic 2010 02:14 pm
Excelente clase; necesito una mano urgente, estoy aún muy inexperto en As3 sin embargo tengo nociones y puedo comprender rápido, ya que mis conocimientos en otros lenguajes ayudan a desarrollar mi entendimiento.

El asunto es que necesito hacer una animación, donde un grupo de burbujas floten por inercia y hagan colision, además de poder arrastrarlas con el mouse y hacer que aparezcan aún más haciendo click; he podido hacer lo que mis conocimientos me han permitido, que son los eventos MouseEvent, sin embargo la colision conjuntamente con el movimiento por inercia no lo he logrado, podrías darme un ejemplo, alumbrarme el camino para poder orientarme y seguir documentándome al respecto por favooorrrr!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.