Comunidad de diseño web y desarrollo en internet online

Hacer un array de un objeto sprite y reproducirlo N veces?

Citar            
MensajeEscrito el 08 Oct 2010 10:59 pm
Hola Foro!!! ^^

Trabajando con AS3 quiero dibujar N numero de objets de la clase sprite, la cosa es que no estoy muy seguro de como hacerlo, tengo una variable que me dira cuantas seran y lo que hago es lo siguiente:

Figura simple

Código ActionScript :

var Atomo:Sprite = new Sprite();
Atomo.graphics.lineStyle(0,0x000000);
Atomo.graphics.beginFill(0x00B050);
Atomo.graphics.drawCircle(0,0,50);
Atomo.graphics.endFill();


Aquí es donde quiero hacer varias figuras:

Código ActionScript :

for (var i:Number=1;i==1;i++) { 
   var gen:Sprite = new Sprite(); 
   gen.graphics.lineStyle(0,0x000000); 
   gen.graphics.beginFill(0x00B050); 
   gen.graphics.drawCircle(0,0,5); 
   gen.graphics.endFill(); 
   this.addChild(gen); 



Alguien me puede dar una pista!!!! se pueden hacer arrays con objetos????? :shock:

Saludos y gracias de antemano! ^^

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

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

chrome
Citar            
MensajeEscrito el 10 Oct 2010 03:36 am
Hola,
bueno... un array es un contenedor de variables del mismo tipo u objetos de la misma clase, por lo tanto si, se pueden hacer arrays con objetos, en realidad siempre son objetos, teniendo en cuenta que Objeto es una instancia de una clase.
Por otra parte, si haces esto:

Código ActionScript :

for (var i:Number=1;i==1;i++) {  
   var gen:Sprite = new Sprite();  
   gen.graphics.lineStyle(0,0x000000);  
   gen.graphics.beginFill(0x00B050);  
   gen.graphics.drawCircle(0,0,5);  
   gen.graphics.endFill();  
   this.addChild(gen); 
}

crearías solo un círculo, por la definición que haces en el For, o sea que si lo que quieres hacer es crear varios (N número de objetos) El lugar donde va la variable N es:

Código ActionScript :

for (var i:Number=1;i==N;i++)

la sintaxis de for es:
palabra clave for ( declaración de variable a usar *; condicional; acción a realizar según la condicional) { acciones a hacer en iteraciones }

* la variable puede ser declarada antes y simplemente darle el valor en el for, o incluso declararla y darle valor antes de ponerla en el for, y simplemente poner su nombre en el mismo.

hmm, para que notes que se hacen varios objetos puedes hacer que una o varias de las propiedades declaradas en el bucle cambie, de esta manera:

Código ActionScript :

for (var i:Number=1;i<20;i++) {  
   var gen:Sprite = new Sprite();  
   gen.graphics.lineStyle(0,0x000000);  
   gen.graphics.beginFill(0x00B050);  
   gen.graphics.drawCircle(0,0,5);  
   gen.graphics.endFill();  
   gen.x = stage.mouseX;
   gen.y = stage.mouseY;
   this.addChild(gen); 
}

Así, mientras el valor de i sea menor a 20 se va a crear una nueva instancia y se posicionará en X e Y al mouse.
Revisa la parte del for "condicional" ahi puedes usar cualquier operador de condicional como <, >, ==, !=, <=, >=.
espero te sirva, hasta luego!

Por hormy1

Claber

124 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Oct 2010 07:45 pm
complementando la resuesta de hormy..ayudate de funciones en la cuales recibas parametros para manejar tanto el aspecto y el numero de objetos a crear asi reusaras codigo, por ejemplo :

Código ActionScript :

import flash.display.Sprite;

var atomos:Vector.<Sprite>;

function createAtomo(_radius:Number, _color:uint,_styleColor:uint=0x00):Sprite
{
   var tmpAtomo:Sprite = new Sprite();
   tmpAtomo.graphics.beginFill(_color);
   tmpAtomo.graphics.lineStyle(0,_styleColor);
   tmpAtomo.graphics.drawCircle(0,0,_radius);
   tmpAtomo.graphics.endFill()
   
   return tmpAtomo;
}

function buildSequence(_count:uint):void
{
   
   atomos = new Vector.<Sprite>;
   var count:uint = _count;
   
   for(var i:uint=0; i<count; i++)
   {
      var atomo:Sprite = createAtomo(5,Math.random() * 0xFFFFFF);//pasas los valores del aspecto
      atomo.x = (atomo.width + 10) * i;
      atomo.y = Math.random() * stage.stageHeight;
      addChild(atomo);
      atomos.push(atomo);
   }
}

buildSequence(20);//llamas a la funcion y le pasas el numero de objetos a crear


NOTA:si puedes mejor usa OOP y clases.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 11 Oct 2010 05:53 pm
Hola!!! muchas gracias!! ya estoy probando lo que me comparten!!! por aqui les estare compartiendo mis resultados!!

SAludos !!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

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

chrome

 

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