Comunidad de diseño web y desarrollo en internet online

Efecto de confeti con AS3

Citar            
MensajeEscrito el 08 Sep 2011 08:23 pm
Buen dia.

Estoy haciendo un proyecto web y necesito usar este efecto que econtre. Como se pueden dar cuenta se puede descargar el archivo y se usan las clases.

Soy honesto y mi AS3 no es muy bueno que digamos, pero le estuve trabajando y no logro hacer que el .fla se vincule con la clase.

Agradeceria que me guiaran.

Gracias

Por diego2008kat

95 de clabLevel



 

Diseñador

firefox
Citar            
MensajeEscrito el 08 Sep 2011 08:34 pm
Jajaja, justo lo estuve usando el otro día pero no les gustó y tuve que armarme otro mas básico (con puro AS porque se basa en circulitos de colores). La implementación no está como clase sino tirada en el timeline, yo lo tuve que pasar a clase para meterlo en mi ejemplo, voy a buscar en casa si no lo borré y te lo paso.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 Sep 2011 08:59 pm
Muchas gracias .... te agradeceria ya que es un proyecto urgente.

Gracias

Por diego2008kat

95 de clabLevel



 

Diseñador

firefox
Citar            
MensajeEscrito el 09 Sep 2011 05:42 pm
Ok, no lo encuentro, seguramente lo borré, y donde estoy ahora ni siquiera tengo el flash para abrirlo, asi que te lo paso copiando y pegando del POST ese. La clase es algo así

Código ActionScript :

package {
   private var numOfParticles:uint=10; // For the ribbon
   private var maxVelocity:Number=8;
   private var minVelocity:Number=1;
   private var particles_ary:Array=[];
    
   private var numOfParticles2:uint=40; // For the short ribbon
   private var particles2_ary:Array=[];
   private var maxVelocity2:Number=5;
   private var minVelocity2:Number=1;

   class Confetti() {
         
      function Confetti():void {
         if (stage) init();
         else addEventListener(Event.ADDED_TO_STAGE, init);
      }
      function init(evt:Event= null):void {
         addEventListener(Event.ENTER_FRAME, updateStage); // listening
         addEventListener(Event.ENTER_FRAME, updateStage2);
      }
      
      function updateStage(event:Event):void {
         if (particles_ary.length < particles_ary.length; i++) { //set repeat conditions for when particles go off stage
            var particle:MoveAsset2 = particles_ary[i]; 
            var c:ColorTransform = new ColorTransform(); 
            c.color = (Math.random() * 0xFFFFFF); particles_ary[i].update(); 
            if (particle.y>stage.stageHeight+particle.height/2) {
               particle.yVelocity = Math.floor(Math.random() * (maxVelocity -  minVelocity)) + minVelocity;
               particle.x = Math.floor(Math.random() * ((stage.stageWidth - (particle.width)) -  (particle.width))) + (particle.width);
               particle.y=0;
               particle.scaleY = particle.scaleX = Math.floor(Math.random() * (3 -  0) + 0);;
            }
             
            particle.ribbon_mc.ribbon_mc.color_mc.transform.colorTransform = c;
             
            trace("scale = " + particle.scaleX);
            if (particle.scaleX||particle.scaleY>1){
               particle.alpha = Math.random()* .8 + .2;
            }
       
         }
      }
         
      function updateStage2(event:Event):void {
         if (particles2_ary.length < particles2_ary.length; i++) { 
               var particle1:MoveAsset1 = particles2_ary[i]; 
               var c:ColorTransform = new ColorTransform(); c.color = (Math.random() * 0xFFFFFF); particles2_ary[i].update(); if (particle1.y&gt;stage.stageHeight+particle1.height/2) {
               particle1.yVelocity = Math.floor(Math.random() * (maxVelocity2 -  minVelocity2)) + minVelocity2;
               particle1.x = Math.floor(Math.random() * ((stage.stageWidth - (particle1.width)) -  (particle1.width))) + (particle1.width);
               particle1.y=0;
               particle1.scaleY = particle1.scaleX = Math.floor(Math.random() * (3 -  0) + 0); // change the scale
            }
                
            particle1.confetti_mc.color_mc.transform.colorTransform = c;
            trace("scale = " + particle1.scaleX);
            if (particle1.scaleX||particle1.scaleY>1){
               particle1.alpha = Math.random()* .8 + .2; // change the alpha channel according to scale
            }
         }
      }
   }
}


Para usarla en un fla tienes que copiar de la librería todos los MC que tiene el fla que te descargaste, porque usa sus nombres de vinculación para instanciarlos (son las cintitas)
Luego si pones esta clase en la misma carpeta del fla, harías

var cnf:Confetti = new Confetti();
addChild(cnf);

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 09 Sep 2011 07:15 pm

Código ActionScript :

         if (particles_ary.length < particles_ary.length; i++) { //set repeat conditions for when particles go off stage 
            var particle:MoveAsset2 = particles_ary[i];  


¿Estas lineas están bien? ¿Que se supone que hacen? Solo por curiosidad

Por Cagarnera

Claber

158 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Sep 2011 07:18 pm
¿Anda?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 09 Sep 2011 07:49 pm
Hol que tal.

No he podido hacer que funcione, esto fue lo que hice:

1 - Cree un documento nuevo de 400 x 400 px.
2 - Copie todos los elementos de la biblioteca del archivo Regenerating_Particles.fla al documento que yo he creado.
3 - Coloque el código que tu me enviaste en el post.
4 - Cree un documento .class (que flash pide que nombre va a tener, yo lo nombre Confetti.as) y le puse las dos ultimas lineas que me envio.

Y no me anda … no se si estoy colocando mal los códigos o que será.

Puede descargar los archivos en este lino http://www.mediafire.com/?lf568o9wqwbzl

Por diego2008kat

95 de clabLevel



 

Diseñador

firefox
Citar            
MensajeEscrito el 09 Sep 2011 07:52 pm
No le pongas Confetti como Document Class, en el único frame pon

var cnf:Confetti = new Confetti();
addChild(cnf);

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 09 Sep 2011 08:28 pm
Ok ... osea que en el unico frame va:

Código ActionScript :

var cnf:Confetti = new Confetti();
addChild(cnf);

package { 
   private var numOfParticles:uint=10; // For the ribbon 
   private var maxVelocity:Number=8; 
   private var minVelocity:Number=1; 
   private var particles_ary:Array=[]; 
     
   private var numOfParticles2:uint=40; // For the short ribbon 
   private var particles2_ary:Array=[]; 
   private var maxVelocity2:Number=5; 
   private var minVelocity2:Number=1; 
 
   class Confetti() { 
          
      function Confetti():void { 
         if (stage) init(); 
         else addEventListener(Event.ADDED_TO_STAGE, init); 
      } 
      function init(evt:Event= null):void { 
         addEventListener(Event.ENTER_FRAME, updateStage); // listening 
         addEventListener(Event.ENTER_FRAME, updateStage2); 
      } 
       
      function updateStage(event:Event):void { 
         if (particles_ary.length < particles_ary.length; i++) { //set repeat conditions for when particles go off stage 
            var particle:MoveAsset2 = particles_ary[i];  
            var c:ColorTransform = new ColorTransform();  
            c.color = (Math.random() * 0xFFFFFF); particles_ary[i].update();  
            if (particle.y>stage.stageHeight+particle.height/2) { 
               particle.yVelocity = Math.floor(Math.random() * (maxVelocity -  minVelocity)) + minVelocity; 
               particle.x = Math.floor(Math.random() * ((stage.stageWidth - (particle.width)) -  (particle.width))) + (particle.width); 
               particle.y=0; 
               particle.scaleY = particle.scaleX = Math.floor(Math.random() * (3 -  0) + 0);; 
            } 
              
            particle.ribbon_mc.ribbon_mc.color_mc.transform.colorTransform = c; 
              
            trace("scale = " + particle.scaleX); 
            if (particle.scaleX||particle.scaleY>1){ 
               particle.alpha = Math.random()* .8 + .2; 
            } 
        
         } 
      } 
          
      function updateStage2(event:Event):void { 
         if (particles2_ary.length < particles2_ary.length; i++) {  
               var particle1:MoveAsset1 = particles2_ary[i];  
               var c:ColorTransform = new ColorTransform(); c.color = (Math.random() * 0xFFFFFF); particles2_ary[i].update(); if (particle1.y&gt;stage.stageHeight+particle1.height/2) { 
               particle1.yVelocity = Math.floor(Math.random() * (maxVelocity2 -  minVelocity2)) + minVelocity2; 
               particle1.x = Math.floor(Math.random() * ((stage.stageWidth - (particle1.width)) -  (particle1.width))) + (particle1.width); 
               particle1.y=0; 
               particle1.scaleY = particle1.scaleX = Math.floor(Math.random() * (3 -  0) + 0); // change the scale 
            } 
                 
            particle1.confetti_mc.color_mc.transform.colorTransform = c; 
            trace("scale = " + particle1.scaleX); 
            if (particle1.scaleX||particle1.scaleY>1){ 
               particle1.alpha = Math.random()* .8 + .2; // change the alpha channel according to scale 
            } 
         } 
      } 
   } 
}


Gracias

Por diego2008kat

95 de clabLevel



 

Diseñador

firefox
Citar            
MensajeEscrito el 09 Sep 2011 09:00 pm
No, la clase va en un archivo de nombre Confetti.as que debe estar en la misma carpeta que el fla. En el fla solo debe decir esto:

var cnf:Confetti = new Confetti();
addChild(cnf);

Si necesitas el code en timeline en vez de una clase, simplemente usa el que te bajaste con el ejemplo. ¿O cual es tu objetivo?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 09 Sep 2011 09:28 pm
Hola ...

Hici como me dijiste, en el fla puse

Código ActionScript :

var cnf:Confetti = new Confetti();
addChild(cnf); 


y en el archivo class puse el que tu diste.

y me saca error ...

Aqui estan la imagenes http://www.mediafire.com/?lf568o9wqwbzl

Por diego2008kat

95 de clabLevel



 

Diseñador

firefox
Citar            
MensajeEscrito el 10 Sep 2011 03:19 am
Ok, me lo merezco por bocón.
Ya encontré la clase que había armado. Sigue paso a paso esto:

- crea la carpeta com/lynda/particles debajo de tu fla
- dentro mete la clase Particles (que está en el Post del confetti)
- y también mete la clase que pongo a continuación:

Código ActionScript :

package com.lynda.particles
{
   import flash.display.MovieClip;
   import com.lynda.particles.Particle;
   import flash.events.Event;
   import flash.geom.ColorTransform;
   
   /**
    * Efecto confetti
    */
   public class EfectoConfetti extends MovieClip
   {
      private var numOfParticles:uint=10;
      private var numOfParticles2:uint=40;
      private var particles_ary:Array=[];
      private var particles2_ary:Array=[];
      private var maxVelocity:Number=8;
      private var minVelocity:Number=1;
      private var maxVelocity2:Number=5;
      private var minVelocity2:Number = 1;
      
      //Hay que incluir los MC en la biblioteca, sino error
      function EfectoConfetti() {
         addEventListener(Event.ENTER_FRAME, updateStage);
         addEventListener(Event.ENTER_FRAME, updateStage2);
      }
      public function kill():void {
         removeEventListener(Event.ENTER_FRAME, updateStage);
         removeEventListener(Event.ENTER_FRAME, updateStage2);
      }
      private function updateStage(event:Event):void {
         if (particles_ary.length<numOfParticles) {
            var moveAsset2:MoveAsset2 = new MoveAsset2;
            var c:ColorTransform = new ColorTransform();
            c.color = (Math.random() * 0xFFFFFF);
            addChild(moveAsset2);
            moveAsset2.ribbon_mc.ribbon_mc.color_mc.transform.colorTransform = c; 
            moveAsset2.yVelocity = Math.floor(Math.random() * (maxVelocity -  minVelocity)) + minVelocity;
            moveAsset2.x = Math.floor(Math.random() * (((stage.stageWidth - (moveAsset2.width))) -  (moveAsset2.width))) + moveAsset2.width;
            particles_ary.push(moveAsset2);
         }
         for (var i:uint = 0; i < particles_ary.length; i++) {
            var particle:MoveAsset2=particles_ary[i];
            c = new ColorTransform();
            c.color = (Math.random() * 0xFFFFFF);
            particles_ary[i].update();
            if (particle.y>stage.stageHeight+particle.height/2) {
               particle.yVelocity = Math.floor(Math.random() * (maxVelocity -  minVelocity)) + minVelocity;
               particle.x = Math.floor(Math.random() * ((stage.stageWidth - (particle.width)) -  (particle.width))) + (particle.width);
               particle.y=0;
               particle.scaleY = particle.scaleX = Math.floor(Math.random() * (3 -  0) + 0);;
               particle.ribbon_mc.ribbon_mc.color_mc.transform.colorTransform = c; 
               if (particle.scaleX||particle.scaleY>1){
               particle.alpha = Math.random()* .8 + .2;
               }
            }
         }
      }

      private function updateStage2(event:Event):void {
         if (particles2_ary.length<numOfParticles2) {
            var moveAsset1:MoveAsset1 = new MoveAsset1;
            var c:ColorTransform = new ColorTransform();
            c.color = (Math.random() * 0xFFFFFF);
            addChild(moveAsset1);
            moveAsset1.confetti_mc.color_mc.transform.colorTransform = c; 
            moveAsset1.yVelocity = Math.floor(Math.random() * (maxVelocity2 -  minVelocity2)) + minVelocity2;
            moveAsset1.x = Math.floor(Math.random() * (((stage.stageWidth - (moveAsset1.width))) -  (moveAsset1.width))) + moveAsset1.width;
            particles2_ary.push(moveAsset1);
         }
         for (var i:uint = 0; i < particles2_ary.length; i++) {
            var particle1:MoveAsset1=particles2_ary[i];
            c = new ColorTransform();
            c.color = (Math.random() * 0xFFFFFF);
            particles2_ary[i].update();
            if (particle1.y>stage.stageHeight+particle1.height/2) {
               particle1.yVelocity = Math.floor(Math.random() * (maxVelocity2 -  minVelocity2)) + minVelocity2;
               particle1.x = Math.floor(Math.random() * ((stage.stageWidth - (particle1.width)) -  (particle1.width))) + (particle1.width);
               particle1.y=0;
               particle1.scaleY = particle1.scaleX = Math.floor(Math.random() * (3 -  0) + 0);;
               particle1.confetti_mc.color_mc.transform.colorTransform = c; 
               if (particle1.scaleX||particle1.scaleY>1){
               particle1.alpha = Math.random()* .8 + .2;
               }
               
            }
         }
      }
   }
   
}


En el fla, unico frame, línea de tiempo pon:

Código ActionScript :

import com.lynda.particles.EfectoConfetti;

addChild(new EfectoConfetti())


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Sep 2011 11:33 pm
Muchisimas Gracias !!!!!!!!!!!!!!!!!!!!

Me funciona perfecto y se adpta al tamaño que le asigne, puedes descargar el archivo en este linnk:

http://www.mediafire.com/?lf568o9wqwbzl

Gracias otra vez

Por diego2008kat

95 de clabLevel



 

Diseñador

firefox

 

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