Foros del Web » Creando para Internet » Flash y Actionscript »

Instanciar objetos dinamicamente

Estas en el tema de Instanciar objetos dinamicamente en el foro de Flash y Actionscript en Foros del Web. Hola, tengo una duda de como hacer una cosa en AS3. Tengo en la biblioteca estos movieclip, instanciados con estos nombres: eco1 eco2 eco3 eco4 ...
  #1 (permalink)  
Antiguo 15/11/2010, 15:14
Avatar de pollorojo1  
Fecha de Ingreso: septiembre-2009
Mensajes: 30
Antigüedad: 15 años, 2 meses
Puntos: 3
Pregunta Instanciar objetos dinamicamente

Hola, tengo una duda de como hacer una cosa en AS3.

Tengo en la biblioteca estos movieclip, instanciados con estos nombres:

eco1
eco2
eco3
eco4
eco5

Quiero saber como puedo instanciarlos dinamicamente para no hacer estode agregar uno por uno:

Código:
var mcECO1:eco1 = new eco1();
var mcECO2:eco2 = new eco2();
var mcECO3:eco3 = new eco3();
var mcECO4:eco4 = new eco4();
var mcECO5:eco5 = new eco5();
De usar algo como esto con un for: var ["mcECO"+i] = new eco+i(); (no se como se hace...jaja)

----------------------------------------------

Por otro lado... tengo unos botones en el escenario y quiero trabar el codigo dinamicamente tmb (pongo el codigo de 2 botones como ejemplo con los nombres de instancia eBT1 y eBT2).

Código:
var i:int = 1;

eBT1.buttonMode = true;
eBT2.buttonMode = true;

var mcECO1:eco1 = new eco1();
var mcECO2:eco2 = new eco2();

//BOTON 1 ---------------------------------------
eBT1.addEventListener(MouseEvent.MOUSE_DOWN, ecoBT1, false, 0, true);
function ecoBT1(event:MouseEvent):void{

//Si i vale distinto a 1, quiero que elimine el mc mcECO2, valiendo i=2.

if(i!=1){
//Efecto de alpha que se va degradando.
	var out:Tween = new Tween(["mcECO"+i], "alpha", Strong.easeOut, 1, 0, 2, true);
//Cuando termino el efecto que elimine el mc mcECO2
	out.addEventListener(TweenEvent.MOTION_FINISH, termino)
	function termino (e:TweenEvent){
		removeChild(["mcECO"+i])
		}
}

//Agregue al escenario el nuevo mc mcECO1.	
mcECO1.x = 220;
mcECO1.y = 65;
var myTweenAlpha:Tween = new Tween(mcECO1, "alpha", Strong.easeOut, 0, 1, 2, true);
addChild(mcECO1);

//Y i=1, para decir que el mc que esta en pantalla es el mcECO1
i = 1;

}
//BOTON 2 ---------------------------------------
eBT2.addEventListener(MouseEvent.MOUSE_DOWN, ecoBT2, false, 0, true);
function ecoBT2(event:MouseEvent):void{

//Si i vale distinto a 2, quiero que elimine el mc mcECO1, valiendo i=1.

if(i!=2){
//Efecto de alpha que se va degradando.
	var out:Tween = new Tween(["mcECO"+i], "alpha", Strong.easeOut, 1, 0, 2, true);
//Cuando termino el efecto que elimine el mc mcECO2
	out.addEventListener(TweenEvent.MOTION_FINISH, termino)
	function termino (e:TweenEvent){
		removeChild(["mcECO"+i])
		}
}

//Agregue al escenario el nuevo mc mcECO2.	
mcECO1.x = 220;
mcECO1.y = 65;
var myTweenAlpha:Tween = new Tween(mcECO1, "alpha", Strong.easeOut, 0, 1, 2, true);
addChild(mcECO2);

//Y i=2, para decir que el mc que esta en pantalla es el mcECO2
i = 2;

}
Se entiende lo que quiero hacer? que al apretar un boton se elimine el movieclip que este en el escenario y se agregue el que le corresponde a ese boton, todo en funcion a la variable i, que va cambiando el valor con respecto al boton apretado.

Y usar esta variable para indicar el movieclip a eliminar y a aplicarle el efecto.
Mi problema es esto ["mcECO"+i] o algo similar para usar...

El que pueda ayudarme lo antes posible se lo agradecere! no con plata por que no tengo jajaja
  #2 (permalink)  
Antiguo 15/11/2010, 19:57
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 10 meses
Puntos: 193
Respuesta: Instanciar objetos dinamicamente

Para lo primero:
Código actionscript:
Ver original
  1. import flash.utils.getDefinitionByName;
  2.  
  3. for (var i:int = 0; i<2; i++)
  4. {
  5.     var tmpClass = getDefinitionByName( 'ball' + i );
  6.     var tmpBall = new tmpClass();
  7.     tmpBall.x = Math.random() * stage.stageWidth;
  8.     tmpBall.y = Math.random() * stage.stageHeight;
  9.     addChild( tmpBall )
  10. }

Obviamente esto necesita 2 clips en la librería llamados ball0 y ball1 para lo segundo no entendí bien pero tal vez esto te sirva. http://www.forosdelweb.com/f16/trata...1/#post3636760

Saludos
  #3 (permalink)  
Antiguo 17/11/2010, 07:03
Avatar de pollorojo1  
Fecha de Ingreso: septiembre-2009
Mensajes: 30
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: Instanciar objetos dinamicamente

Ah! muy buena respuesta GROSO! me parece que funciona para lo que necesito, lo tengo que probar pero estuve viendo el codigo y es lo que buscaba!

MIL GRACIAS

Etiquetas: as3, biblioteca, dinamicamente, objetos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:54.