Comunidad de diseño web y desarrollo en internet online

addChild();

Citar            
MensajeEscrito el 13 May 2009 02:33 am
holaa como estan!?...
el siguiente es un tutorial de la pagina http://schoolofflash.com/
basicamente lo q ase es generar un movieclip desde el centro de la pantalla y aser q se expandan.. pueden verlo en la pagina..

quisiera q me explique algunas de las cosas q realiza.. ai va el codigo (en la bibloteca esta el mc star..)

Código :


var container:MovieClip = new MovieClip(); //  1 PARAA QUE CREA ESTE OBJETO!?
addChild(container);  // 2 QE ASE EN ESTE PASO 
 
root.transform.perspectiveProjection.fieldOfView = 120;
 
addEventListener(Event.ENTER_FRAME, addStar);
 
function addStar(e:Event):void
{
   var mc:star = new star();
   mc.x = stage.stageWidth / 2;
   mc.y = stage.stageHeight / 2;
   mc.z = 0;
   mc.xVel = Math.random() * 4 - 2;
   mc.yVel = Math.random() * 4 - 2;
   mc.zVel = Math.random() * 4 - 2;
   mc.count = 0;
   container.addChild(mc);
   mc.addEventListener(Event.ENTER_FRAME, animate);
}
 
function animate(e:Event):void
{
   e.currentTarget.x += e.currentTarget.xVel;  //3  QUE ASE CURRENTTARGENT Y COMO SABE Q ES MC?? SI MC 
   e.currentTarget.y += e.currentTarget.yVel; //     ESTA DECLARADA EN LA FUNCION DE ARRIBA NO EN ESTA
   e.currentTarget.z += e.currentTarget.zVel;
   e.currentTarget.count++;
   if (e.currentTarget.count >= 100)
   {
      e.currentTarget.removeEventListener(Event.ENTER_FRAME, animate);
      container.removeChild(MovieClip(e.currentTarget));  //4 Por ultimo. para q borra el objeto.
   }
}


Bueno.. si me pueden ayudar .. se los agradeceria. :D . ya que el tutorial esta en ingles.. y no consigo ninguno de este estilo en español..

Desde yaaa GRACIAS :D

Por feresr

70 de clabLevel



 

msie
Citar            
MensajeEscrito el 13 May 2009 06:52 am
Por partes
1.-new
En AS.3, los MovieClips (realmente cualquier cosa) primero se crean. Y se crean con "new", p.e.

Código ActionScript :

container:MovieClip = new MovieClip()
//y
var mc:star = new star();

Decimos que "creamos un objeto "x" de la Clase "X". Así en la primera línea creamos un Objeto de tipo MovieClip y en la segunda creamos un objeto de la clase "star". en Flash existen diversas clases definidas (MovieClip, Sprite, DisplayObject, Array, Date....) y, además, cuando creamos un símbolo en la biblioteca y le decimos que tiene nombre de Clase también tenemos una nueva Clase
2.-addChild
Hemos visto que los objetos se crean, pero sólo los veremos cuando los "añadimos a la DisplayList". Vamos, cuando usamos un addChild -lógicamente sólo podemos añadir a la "DisplayList" aquelos objetos que se "ven". Así pues, addChild viene a ser un poco como el attachMovie. en general escribiremos

Código ActionScript :

var variable:Clase=new Clase()
addChild(variable)

3.-addEventListener y currentTarget
A la hora de "dar comportamiento" a un Mc usamos addEventListener.

Código ActionScript :

//TODAS las funciones addEventListener son de la forma
variable_ref.addEventListener(EVENTO,funcion,....)
//TODAS las funciones tienen un argumento de la Clase Event -o EventMouse-
function funcion(e:event){....}

Tal y como dices, al haber declarado la variable "mc" DENTRO de la función (es una variable que hace referencia a un MC), no se puede usar fuera de la función. No nos importa porque dentro de la "propiedad" target -o currentTarget- tenemos la referencia a nuestro MC. en este sentido es muy parecido al Loader de Flash MX, o a los Tweens
4.-cuando acabamos con un MC debemos, para eliminarlos
--Eliminar los "listeners" que le hayamos creado
--Eliminarlo de la displayList si queremos que desaparezca de la pantalla

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 May 2009 01:22 pm
mUchisimas gracias Eiseo2!. m sacaste algunas dudas.!... ahora bien todabia no entiendo una cosa..
se que es crear un objeto de clase.. pero no entiendo por q crea un movie clip. llamado containter?.

aver si me explico mejor..

Código :


var container:MovieClip = new MovieClip(); //  CREA UNA INSTANCIA D MC LLAMADO CONTAINER CIERTO?
addChild(container);  // Como dice eliceo2. aca la Inserta en el esenario... 
 
root.transform.perspectiveProjection.fieldOfView = 120; 
 
addEventListener(Event.ENTER_FRAME, addStar); //Pone un listener q se repetira cadavez q entre al frame.. y llama a la
                                                                    //funcion addStar.    voy bien ?   :P 
 
function addStar(e:Event):void     // crea la funcion addStar
{
   var mc:star = new star();       //cada vez q es llamada crea una nueva estrella
   mc.x = stage.stageWidth / 2;  // la pone en el centro del esenario
   mc.y = stage.stageHeight / 2;
   mc.z = 0;
   mc.xVel = Math.random() * 4 - 2;  //y le define una velocidad aleatoria.. en x y z
   mc.yVel = Math.random() * 4 - 2;
   mc.zVel = Math.random() * 4 - 2;
   mc.count = 0;
   container.addChild(mc); // ACA??..  pega la estrella en el contenedor q esta en el esenario?..  no??
                                          //no es lo mismo pegar directamente la estrella(mc) en el esenario..??

   mc.addEventListener(Event.ENTER_FRAME, animate); //crea otro listener que se ejecuta cuando entra al frame 
                                                                                //pero al frame de del (MC) ?.. estoy en lo correcto??..
}  
 
function animate(e:Event):void //esta funcion le incrementa la variacion en x y en y
{
   e.currentTarget.x += e.currentTarget.xVel;  // aca... "e" es el evento que le paso(ENTER_FRAME) NO??
   e.currentTarget.y += e.currentTarget.yVel; //  supongo q currentTarget es para aser referencia a mc
   e.currentTarget.z += e.currentTarget.zVel; // aunqeu no entiendo bien su funcionamiento
   e.currentTarget.count++;
   if (e.currentTarget.count >= 100) { // Esto lo ase para que cuando alla 100 estrella en el esenario borre la 
                                                            primera q creo?..   verdad?

      e.currentTarget.removeEventListener(Event.ENTER_FRAME, animate);
      container.removeChild(MovieClip(e.currentTarget));
   }
}



bueno.. :P espero aberme explicado medianamente... gracias!

Por feresr

70 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 May 2009 01:39 pm
porque "mete" las estrellas DENTRO de "container"

Código ActionScript :

container.addChild(mc); 


Pero, tal y como dices NO es necesario(*), podría haber escrito

Código ActionScript :

addChild(mc) //<---y estaría en el escenario

y funcionaría igual
Pero te equivocas con lo del "count". En el código tenemos:

Código ActionScript :

e.currentTarget.count++;

Lo que significa que "cada estrella" tiene una variable "count". Cuando se ha movido 100 veces, desaparece

(*)El sentido que le veo a tener todas las estrellas dentro de un MC "container" es, o bien hacer una máscara sobre "container" para que no se dispersen por toda la película, o bien mover el container

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 May 2009 04:26 pm
muchas gracias eliseo2. la verdad me ayudaste un toco!!..

y si.. ya entendi lo del contador... !

Graciasss!!

Por feresr

70 de clabLevel



 

msie

 

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