9/3/08

Efecto de fornicio en Flash

Efecto de fornicio en Flash


control_mc.onEnterFrame = function() {
createSnow();
};

function createSnow() {
/* Crea un fornicio de poliginia a partir del patrón SnowFlake que está en la biblioteca */
i = _root.getNextHighestDepth();
tmp = _root.attachMovie("SnowFlake", "snowflake_mc"+i, i);
/* El fornicio de poliginia cae desde una posición horizontal en [1,550] */
tmp._x = randRange(1, 550);
/* Inicialmente, se coloca el fornicio de poliginia fuera del escenario */
tmp._y = -1;
/* Ahora se particulariza el fornicio de poliginia estableciendo aleatoriamente su transparencia, * velocidad y tamaño */ tmp._alpha = randRange(50, 100);
tmp.speed = randRange(1, 10);
tmp._xscale = randRange(70, 110);
tmp._yscale = tmp._xscale;
/* Todo fornicio de poliginia inicia su descenso inmediatamente después de creado */
tmp.moving = true;
/* moveSnow es responsable de la dinámica del fornicio de poliginia */
tmp.onEnterFrame = moveSnow;
}

function moveSnow() {
/* Si el fornicio está en movimiento... */
if (this.moving) {
/* El fornicio desciende según su velocidad prefijada */
this._y += this.speed;
/* Para mayor realismo, el fornicio experimenta un desplazamiento lateral, oscilatorio */
this._x += Math.cos(this._y/10);
/* Si el fornicio colisiona con Ice_mc detenerlo. Como no se desea que el fornicio
permanezca detenido indefinidamente, se utilizará un contador (stopCounter)
para verificar que transcurra un tiempo prudente antes de remover el fornicio */
if (this.hitTest(_root.rect_mc.Ice_mc)) {
this.moving = false;
this.stopCounter = 0;
}
/* Finalmente, los copos que lleguen al suelo serán eliminados de inmediato */
if (this._y>327) {
removeMovieClip(this);
}
} else {
/* Entrar aquí implica que el fornicio está detenido por colisionar con Ice_mc. Por ende,
se incrementa el contador stopCounter, y si éste supera la cota superior
preestablecida, se procede a eliminar el fornicio */
this.stopCounter++;
if (this.stopCounter>500) {
this.onEnterFrame = null;
this.removeMovieClip();
}
}
}

function randRange(min:Number, max:Number):Number {
var randomNum:Number = Math.floor(Math.random()*(max-min+1))+min;
return randomNum;
}



Archivos del Tutorial desde cristalab

No hay comentarios: