¿Te gusta el efecto de nieve que ves en la felicitación del blog?
Dibuja una forma semicircular, conviertela en clip de pelÃcula, y dale un nombre de identificador ‘copo_mc’. Ahora solo tienes que copiar el código que hay abajo.
var cantidad = 250;
var max = 50;
var min = 10;
var ancho = Stage.width;
var altura = Stage.height;
for (var i = 0; i < cantidad; i++) {
copo_mc = this.attachMovie("copo_mc", "copo_mc" + i, i);
with (copo_mc) {
_x = Math.floor(Math.random() * ancho);
_y = Math.floor(Math.random() * altura);
_xscale = _yscale = _alpha = Math.floor(Math.random() * (max - min + 1)) + min;
}
copo_mc._ypos = Math.floor(Math.random() * 2 + .5);
copo_mc.incremento = -0.025 + Math.random() * 0.05;
copo_mc.radianes = 0;
copo_mc.onEnterFrame = function() {
this.radianes += this.incremento;
//trace(this.radianes)
this._x += Math.sin(this.radianes);
this._y += this._ypos;
if (this._y >= altura || this._x >= ancho || this._x <= 0) {
this._y = -10;
this._x = -10 + Math.floor(Math.random() * ancho + 10);
}
};
}
Descargar ejemplo (3773 hits)
Diciembre 19th, 2005 at 9:19 am
Para redondear el tema añadirÃa esta linea en la creación de los copos
copo_mc.cacheAsBitmap=true;
Se nota el cambio en ordenadores lentos o si ponemos más cantidad de copos.
Diciembre 19th, 2005 at 10:58 am
y para redondear el post, hagamos una única “lÃnea de tiempo” para todos los copos
Diciembre 19th, 2005 at 12:33 pm
cacheAsBitmap estarÃa bien, pero se tendrÃa que modificar algo más ya que el códgio está escrito para AS1.
Eliseo:
Lo de una sola lÃnea de tiempo ¿A que te refieres?
Saludos
Diciembre 19th, 2005 at 1:06 pm
un sólo onEnterFrame (por ejemplo sobre copo_mc0) y dentro el bucle, en lugar de un bucle y dentro el onEnterFrame.
Diciembre 19th, 2005 at 6:53 pm
No hay que tocar nada para AS1, lo publicas para AS1 y sigue funcionando y si lo haces para Flash 7 simplemente no funciona el cacheAsBitmap, pero no da error, ya que solo pones una variable de un movieClip a true.
Diciembre 19th, 2005 at 7:40 pm
Eliseo, ¿no serÃa lo mismo? creo que de las dos formas cada instancia de clip de pelÃcula tiene su propia lÃnea de tiempo.
byGui, si te fijas, hay una diferencia en el efecto de caida de la nieve si lo exportas como AS1 o AS2. Fijate.
Saludos
Diciembre 20th, 2005 at 12:35 pm
[code]
var cantidad = 250;
var max = 50;
var min = 10;
var ancho = Stage.width;
var altura = Stage.height;
//creamos los copos
for (var i = 0; i = altura || copo._x >= ancho || copo._x
Diciembre 20th, 2005 at 12:37 pm
Me he fijado y lo que veo en Flash MX 2004, Flash 8 tanto en AS1 como en AS2 es que radianes es NaN y solo veo que los copos se muevan en _y. Pero en ningún momento lo veo como en el banner.
Diciembre 20th, 2005 at 12:58 pm
http://www.after-hours.org/foro/viewtopic.php?p=29714
(he pasado la discusión sobre la lÃnea de tiempo,porque se me cortaba el comentario
respecto a tu comentario, btGui, declara antes radianes, vamos añade una lÃnea como
[code]
radianes=0
[/code]
dentro del with(copo_mc)
(es que AS2 y Flash 8 se lleva muy mal con las variables no declaradas y el operador de incremento)
Diciembre 20th, 2005 at 1:17 pm
Si, si lo se, yo habia declarado:
copo_mc.radianes = copo_mc.incremento=-0.025+Math.random()*0.05;
para que tuviera un valor de princicpio pero lo que no veo es la diferencia entre AS1 y AS2 en el código. Y en flash MX 2004 y AS1 también me da NaN en los radianes.
Lo comentaba para saber cual era la diferencia que tenÃa que ver
Diciembre 20th, 2005 at 2:20 pm
bGuy: Si escribes trace(this.radianes) te devolverá el valor calculado. La diferencia, es que en AS2, el efecto de caida no es correcto (los copos caen directamente hacia abajo, en AS1 se nta un efecto como si el viento mueve los copos aleatoriamente en su eje _x), a ver si entre los tres lo arreglamos
Eliseo, hago la modificación que comentas (declarar la variable radianes).
Saludos!
Diciembre 20th, 2005 at 4:01 pm
Toni, me referÃa, con lo del radianes=0 que
se tiene que escribir -o dentro del with o inmediatamente antes del copo_mc.onEnterFrame
[code]
copo_mc.radianes=0
//luego viene lo de
copo_mc.onEnterFrame=function(){…bla-bla-bla…}
[/code]
En MX 2004 Publicar para AS.2 funciona
NOTA:Podemos escribir, dentro del onEnterFrame
[code]
if (this._name=="mc_copo0″){
trace (this.radianes)
//luego el resto del código
}
[/code]
Para ver, que si no le ponemos lo del copo_mc.radianes=0 nos saldrá NaN (No es un número)
El problema de AS.2 es muy sencillo.Si nosotros escribimos en una pelÃcula nueva
[code]
this.onEnterFrame=function(){
variable+=2
trace(variable)
}
[/code]
nos va a salir NaN porque no le hemos dado un valor inicial de número, tendrÃamos que escribir
[code]
variable=0
this.onEnterFrame=function(){
variable+=2
trace(variable)
}
[/code]
Diciembre 20th, 2005 at 4:48 pm
Bueno, asà es como queda la cosa (como al principio pero declarando la variable):
La variable radianes, se declara para cada instancia de copo_mc.
Si escribimos trace(this.radianes) el trace es correcto.
Pero … el resultado sigue siendo diferente para as1 - as2.
saludos
Diciembre 20th, 2005 at 6:02 pm
Yo lo sigo viendo igual en AS1 que en AS2. No lo pillo.
Eso si en el código que has puesto ahora pone:
if (this._y || this._x >= ancho || this._x this._y >= altura
Diciembre 20th, 2005 at 6:34 pm
Si, error de transcripción, arreglado. Gracias.
Diciembre 22nd, 2005 at 11:36 pm
Hola!:
Gracias por el script, y por el resto de la web. Te sigo en la sombr hace un tiempo
.
Una duda… Flash no es muy fuerte, jeje, y me gustarÃa añadir movimiento al script. Es decir, en vez de que aparezca solo Feliz Navidad, poder hacer una animacion en la que aparezca mi nombre, feliz año, etc, y vaya pasando poco a poco.
He realizado la animacion pero se queda estática en el primer frame, y no avanza hacia el resto.
Simplemente he descaragado el ejemplo, he borrado la capa donde aparece “Feliz Navidad” y lo he cambiado por una capa con la animación, pero he probado y no hay forma.
Una ayudita??
Gracias!!
Diciembre 23rd, 2005 at 12:09 am
Hola Jorge, gracias por seguirnos. Lo que tienes que hacer con la animaciòn, es meterla dentro de un clip de pelÃcula.
Saludos
Diciembre 23rd, 2005 at 7:39 pm
¡Muchas gracias Toni!
A pasar buenos dÃas
.
Diciembre 26th, 2005 at 2:01 pm
Hola Toni, gracias por el ejercicio.
He modificado un poco tu código para que los copos se posen sobre un objeto (sujeto_mc) y rule bien en AS2
[code]
var cantidad = 400;
var max = 50;
var min = 20;
var ancho = Stage.width;
var altura = Stage.height;
for (var i = 0; i=altura || this._x>=ancho || this._xhttp://drusunlimited.com/2006
Un saludo. Javi
Diciembre 26th, 2005 at 2:38 pm
Buena idea Drus, tambien puedes hacerlo con la clase de AS8 ConvolutionFilter.
Saludos!
Diciembre 26th, 2005 at 3:15 pm
Vaya, se ha cortado el post. Hago como Eliseo y me lo llevo al foro
http://www.after-hours.org/foro/viewtopic.php?p=29714
Mayo 9th, 2006 at 4:51 pm
Acid Reflux
Acid Reflux