Cristalab

                 ¿Quieres registrarte?

Cómo crear un efecto de nieve en ActionScript 3

Por: JaLeRu
4 de Octubre del 2007
1638 de clabLevel
Otros artículos de JaLeRu
14,958 visitas

En este Tip muestro como hacer el clásico efecto de nevada en ActionScript 3. Este es un efecto ya visto anteriormente aunque en ActionScript 2. Así que este tip es más bien una actualización del efecto.

Código :

// Tamaños pantalla
var width2 = stage.stageWidth;
var height2 =  stage.stageHeight;
// Máximo tamaño copos y cantidad
var max_tamaño = 10;
var copos = 100;
function init ()  {
   for (var i:Number=0; i<copos; i++) {

      var t:snow=new snow();
      addChild(t);
      t.alpha = 0.2+Math.random()*0.6;
      t.x = -(width2/2)+Math.random()*(1.5*width2);
      t.y = -(height2/2)+Math.random()*(1.5*height2);
      t.scaleX = t.scaleY=0.5+Math.random()*(max_tamaño*0.1);
      t.k = 1+Math.random()*2;
      t.viento = -1.5+Math.random()*(1.4*3);
      t.addEventListener(Event.ENTER_FRAME, mover);
   }
};
function mover(e:*){
   e.target.y  += e.target.k;
   e.target.x += e.target.viento;
   if (e.target.y>height2+10) {

      e.target.y = -20;

   } 

   if (e.target.x>width2+20)  {

      e.target.x = -(width2/2)+Math.random()*(1.5*width2);
      e.target.y = -20;

   }
   else  if (e.target.x<-20)  {

      e.target.x = -(width2/2)+Math.random()*(1.5*width2);
      e.target.y = -20;
   }
}
init();

Ok, para que esto funcione solamente creen un mc, que sea un punto blanco difuminado (Blur) o un circulo que tenga un degradado radial de blanco al centro y transparente al rededor.
Para que represente un copo de nieve.

Luego en la Biblioteca, le das clic derecho seleccionas Linkage y en Class, escribe snow.

Simple, pero bonito.
Recomiendo ocupar fondo oscuro.



Para el ejemplo, el tamaño máximo de los copos es 5 y la cantidad máxima de copos es 150.
:wink:


Artículos Relacionados


Etiquetas actionscript_3

Comentarios | Enviar un comentario
Te quedó muy bien JaLeRu, te felicito!!!
No te preocupes, ahora las traducciones están de moda :lol:
Por: The Fricky!

The Fricky! :

Te quedó muy bien JaLeRu, te felicito!!!
No te preocupes, ahora las traducciones están de moda :lol:

Si me había dado cuenta.
Tengo otras cuanta traducciones que hice ase unos meses.
Si tengo tiempo las subo en unos días más.
Que bueno por cierto que te haya gustado. :D
Por: JaLeRu
Se ve muy bien. (y)
Por: Carloz.Yanez
Interesante efecto .. pero yo veo que no es 5 sino 10 y la maxima cantidad es 100 y no 150 :? es asi o estoy equivocado U_U

Pero me gusto el efecto ^^ ha quedado bien padre .... :D
Por: Pley
muy bueno felicitaciones XD
Por: paberu_blog
me gusta XD
Por: zombieek
Que significa:

(e:*) de la función mover
Por: Sisco

Sisco :

Que significa:

(e:*) de la función mover

"e" es el evento que ejecuta la función, en este caso el ENTER_FRAME. Este parámetro lo pasa directamente el listener.

Código :

t.addEventListener(Event.ENTER_FRAME, mover);

Puso asterisco (*) para no definir el tipo de parámetro, pero podía haberlo definido como "evento"

Código :

function mover(e:Event)

Por: Zguillez
JaLeRu, para un mejor rendimiento, en vez de ENTER_FRAME puedes usar un Timer a 100ms e ir experimentando con los ms. ENTER_FRAME es muy dependiente de la calidad del procesador y puede dar resultados impredecibles en otros PCs
Por: Freddie
Guaaaao, te quedo mejor que el primero, de hecho, mucho mas real, desde la idea del nuevo copo de nieve con un degradado, y los movimientos de los mismos, geniaaaal, gracias.

Freddie, en lenguaje de mortales, que quiere decir eso que mencionaaaas?? Gracias por la respuesta
Por: Señor Oz_blog

Señor Oz_blog :

Freddie, en lenguaje de mortales, que quiere decir eso que mencionaaaas?? Gracias por la respuesta
La idea es usar la clase Timer, en vez de ENTER_FRAME.

Mira este tip de la clase Timer de AS3 para entenderlo mejor.
Por: Freddie
Timer... Buena idea.
Y es cierto que son menos gastadores de recursos.
Ya que había echo un juego que verificaba casillas constantemente.
Con el EnterFrame, se ponía lentísimo.
Pero con el timer, no hay problemas.
Por: JaLeRu
Bien hecho, JaLeRu, bien hecho :roll:
Por: The Fricky!

The Fricky! :

Bien hecho, JaLeRu, bien hecho :roll:

Perdon, hecho.
¿Tiene algún significado "echo"?
xD Es que creo que me acostumbre a escribir "echo" por el Batch. :lol:
Perdón, intentare escribir mejor.
Pero lo hecho, hecho esta.
Por: JaLeRu

JaLeRu :

¿Tiene algún significado "echo"?
echo: echar
hecho: hacer
Por: Freddie

Freddie :

JaLeRu :

¿Tiene algún significado "echo"?
echo: echar
hecho: hacer

Gracias Freddie.
Por: JaLeRu
quedo muy bien es dificil logra una buena naturalidad y espontaneidad con cosas que caen
Por: death scythe_blog
Fina aplicación del random, me ha inspirado para hacer mi wordcloud (con timerEvent claro ^^)

gracias!
Por: hum4_blog
Muy buen Tip JaLeRu ^^
Por: flashreloco
Hola
me encanto este efecto nieve pero quisiera usarlo en una Presentacion con diapositivas de PowerPoint es posible?
gracias
Por: clayla_blog

clayla_blog :

Hola
me encanto este efecto nieve pero quisiera usarlo en una Presentacion con diapositivas de PowerPoint es posible?
gracias

Me parece que no. Power Point no soporta Archivos Swf.
Por: JaLeRu

JaLeRu :

clayla_blog :

Hola
me encanto este efecto nieve pero quisiera usarlo en una Presentacion con diapositivas de PowerPoint es posible?
gracias

Me parece que no. Power Point no soporta Archivos Swf.

http://office.microsoft.com/es-es/powerpoint/HA010348073082.aspx
Por: Zguillez
Gracias por la respuesta, son totalmente novata en el tema, vere que puedo lograr
gracias de nuevo
Por: clayla_blog
pero si quiero crearlo en flash 8
tengo que programarlo para que me
muestre el efecto o diseñando
no entiendo bien ps
Por: vladimir_blog
En flash 8 se ocupa As2 y no As3. El tutorial para crearlo en As2 si existe. De hecho mi tutorial fue basado totalmente en un tutorial de As2.
Por: JaLeRu
Hola
Y el efecto en As2 es el mismo que en As3 ?
Para trabajar en As3 tengo que comprar otro software de flash?
quien se se ocupa de As3? y donde se puede adquirir?

Disculpen , es que soy meganovato. Gracias
Por: gmopinillosv
Bueno señores ya descargue el flash cs3, (de prueba) a ver si me convence. Aunque he batallado mucho con as2, empezar de nuevo es como para pensarlo 2 veces , pero que le vamos hacer hay que seguirle a la nueva tenologia si no nos deja . Soy nuevo en cs3 y espero ayuda en lo que puedan. Gracias
pd. habia escuchado el as3 pero nunca le di importancia pensaba que con as2 era sufi, gran error. bye
Por: gmopinillosv
Suerte con As3...
Te recomiendo que leas algunos tutoriales de esta web.
Por: JaLeRu
Y ya me salio quedo muy chulo, la dispersidad de los copos se ve muy natural. Me uno al grupo de los que te agradecen, Gracias una vez mas Jaleru.
Por: gmopinillosv
muy lindo pero no anda.... no reconoce el snow de la linea 10
Por: german_blog
perdon pero soy principiante, y la verdad no me queda muy claro en donde insertar el codigo, me podrian explicar un poco mas detallado, o sea el codigo se inserta directo en la edicion de "snow" como symbolo? o ya en el "scene" se inserta el symbolo y ahi se pega el codigo por que eso fue lo que hice pero no me funcion nada, gracias de antemano.
Por: Klaudia-blog
Estos errores me saca:
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 10: The class or interface 'snow' could not be loaded.
var t:snow=new snow();

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 21: A type identifier is expected after the ':'.
function mover(e:*){

Total ActionScript Errors: 2 Reported Errors: 2
Por: Klaudia-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.