Ver Mensaje Individual
  #6 (permalink)  
Antiguo 11/02/2010, 09:49
solace33
 
Fecha de Ingreso: septiembre-2009
Mensajes: 20
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: addChild sin tener que volver a declarar (migrando desde as2)

Hola,

Gracias a todos por contestar,

loncho_rojas gracias, pero no estoy intentando mostrar una imagen sino un movieclip que está en el la libreria. Y no tengo problemas al cargarlo, pero si te fijas, en el ejemplo que me has puesto utilizas declaracion y carga en la misma funcion, yo quiero dividirlas en distintas funciones y es lo que mi cabeza no llega a entender como hacer.

(lo del visible es lo de menos, era un ejemplo para mostrar que no puedo crear un contenedor y luego modificar sus parametros en otra función.)

vale pongo un codigo valido ahora:


Código:
import flash.events.MouseEvent;

var contenedor:MovieClip = new mc1();
contenedor.x = 100;
contenedor.width = 112;
contenedor.height = 168;

function cargaclip(event:MouseEvent) : void{
 addChild(contenedor);
}

boton1.addEventListener(MouseEvent.CLICK, cargaclip);

como veis es correcto, pero solo me cargará el clip la primera vez que pulse el boton, si vuelvo a pulsar el boton ya no se carga.

para solucionar esto, tengo que meter la creacion del contenedor y sus parametros (lo que llamabamos la funcion "datos") dentro de la funcion "cargaclip" de esta manera:

Código:
import flash.events.MouseEvent;

function cargaclip(event:MouseEvent) : void{
 var contenedor:MovieClip = new mc1();
 contenedor.x = 100;
 contenedor.width = 112;
 contenedor.height = 168;
 addChild(contenedor);
}

boton1.addEventListener(MouseEvent.CLICK, cargaclip);
esto ultimo funciona pero es algo que no quiero hacer porque tengo muchos contenedores y botones y no quiero tener que volver a declarar cada vez que quiero que se cargue el movieclip "mc1", tambien por motivos de claridad al leer el codigo, quiero dividir en dos funciones, por un lado:

la declaración:

Código:
function datos(){
 var contenedor:MovieClip = new mc1();
 contenedor.x = 100;
 contenedor.width = 112;
 contenedor.height = 168;
}
por otro lado la carga:

Código:
function cargaclip(event:MouseEvent) : void{
 addChild(contenedor);
}

y por otro la modificacion de un parametro:

Código:
function volvervisible(event:MouseEvent) : void{
contenedor.visible = false();
}
y que funcionen tantas veces como veces presione el boton.

Se que lo que falla es algo que no me cabe en la cabeza, porque en as2 si se podia hacer y ahora en as3 ha de hacerse de otra forma mas correcta una vez entendida la logica.
He intentado poner que las variables sean public pero tampoco va,

quiero que la variable contenedor una vez declarada pueda modificarse en cualquier funcion.

Un saludo y gracias.

Última edición por solace33; 11/02/2010 a las 09:50 Razón: x