// Importamos las clases necesarias import flash.filters.BlurFilter; // Creamos el fondo de la película var fondo:MovieClip = new MovieClip; fondo.graphics.beginFill(0x993333); fondo.graphics.moveTo(0,0); fondo.graphics.lineTo(550, 0); fondo.graphics.lineTo(550, 400); fondo.graphics.lineTo(0, 400); fondo.graphics.lineTo(0, 0); fondo.graphics.endFill(); addChild(fondo);Si lo pruebas, verás que se rellena el fondo con un tono rojo.
//Creamos la estrella var estrella:MovieClip = new MovieClip ; estrella.graphics.lineStyle(10, 0x000000, 100, true, "normal", "none", "miter", 0); estrella.graphics.beginFill(0xCCFF33, 85); estrella.graphics.moveTo(20+stage.width/2, -91+stage.height/2); estrella.graphics.lineTo(22+stage.width/2, -21+stage.height/2); estrella.graphics.lineTo(84+stage.width/2, 0+stage.height/2); estrella.graphics.lineTo(22+stage.width/2, 21+stage.height/2); estrella.graphics.lineTo(20+stage.width/2, 91+stage.height/2); estrella.graphics.lineTo(-22+stage.width/2, 37+stage.height/2); estrella.graphics.lineTo(-86+stage.width/2, 56+stage.height/2); estrella.graphics.lineTo(-50+stage.width/2, 0+stage.height/2); estrella.graphics.lineTo(-86+stage.width/2, -56+stage.height/2); estrella.graphics.lineTo(-22+stage.width/2, -37+stage.height/2); estrella.graphics.lineTo(20+stage.width/2, -91+stage.height/2); estrella.graphics.endFill(); addChild(estrella);Ahora, ya tenemos el fondo y la estrella en el centro.
var brilloMax:Boolean = false;
var miBrillo:Number = 80;
import flash.filters.GlowFilter;//Necesitamos importar el filtro
estrella.addEventListener(Event.ENTER_FRAME, cambiarBrillo);
function cambiarBrillo(event):void
{
//Hacemos que el brillo se vaya intensificando y atenuando
var brillo:GlowFilter = new GlowFilter(0xCCCC88,100,miBrillo,miBrillo,1,1);
estrella.filters = [brillo];
if (brilloMax) {
miBrillo += 3;
if (miBrillo > 120) {
brilloMax = false;
}
} else {
miBrillo -= 3;
if (miBrillo < 80) {
brilloMax = true;
}
}
}
// Funciones para poder mover la estrella
estrella.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
function arrastrar(event:MouseEvent):void {
estrella.startDrag();// Al mantener pulsada la estrella podremos arrastrala
}
estrella.addEventListener(MouseEvent.MOUSE_UP, soltar);
function soltar(event:MouseEvent):void {
estrella.stopDrag();// Cuando soltemos, la estrella permanecera en el lugar que deseemos
}package {//Importamos las clases necesarias
import flash.display.MovieClip;//Necesitamos MovieClip que es lo que crearemos
import flash.filters.BlurFilter;//El filtro que emplearemos
import flash.events.Event; //Utilizaremos evento
import flash.events.EventDispatcher; //Y un generador de eventos
//Y creamos nuestra clase como una subclacse (extends) de MovieClip, para que disponga de sus métodos
public class Copo extends flash.display.MovieClip {
private var velocidad:Number;// Velocidad de caída del copo
private var estrella:MovieClip;// Objeto estrella que utilizaremos para saber si choca con ella
private var fondo:MovieClip;// Objeto sobre el que aparecerán los copos
private var vidaCopo:Number=300;// La vida que tendrá el copo antes de derretirse
public function Copo(_estrella:MovieClip, _fondo:MovieClip) {
this.estrella=_estrella;//Asignamos los parámetros a sus respectivas propiedades
this.fondo=_fondo;
//dibujamos el copo
this.graphics.beginFill(0xFFFFFF);
this.graphics.moveTo(20, -91);
this.graphics.lineTo(22, -21);
this.graphics.lineTo(84, 0);
this.graphics.lineTo(22, 21);
this.graphics.lineTo(20, 91);
this.graphics.lineTo(-22, 37);
this.graphics.lineTo(-86, 56);
this.graphics.lineTo(-50, 0);
this.graphics.lineTo(-86, -56);
this.graphics.lineTo(-22, -37);
this.graphics.lineTo(20, -91);
this.graphics.endFill();
// Inicializamos las variables, posición del copo, el desenfoque y su velocidad
this.width=num_aleatorio(2,6); //Tamaño aleatorio
this.height=this.width;
this.velocidad=num_aleatorio(2,5); //Velocidad aleatoria
var des:Number=num_aleatorio(3,5); //Desenfoque aleatorio
var desenfoque:BlurFilter=new BlurFilter(des,des);
this.filters=[desenfoque];
//Posición aleatoria, con respecto al fondo
this.x=num_aleatorio(fondo.x,fondo.width);
this.y=fondo.y;
//El evento added se produce al agregar el elemento a la escena o a un contenedor
//Así, no comenzará a caer hasta que no se visualice.
this.addEventListener("added", iniciarCaida);
}
private function iniciarCaida(event):void {
this.addEventListener("enterFrame", caerCopo);
}
// Función para saber si choca contra la estrella o llega al suelo
private function parado():Boolean { //Comprobamos si ha llegado al fondo o chocado con la estrella
return this.y>=fondo.height-this.height/2 || estrella.hitTestPoint(this.x, this.y, true);
}
// Función que hará caer o parar al copo
private function caerCopo(event) {
if (! parado()) {//Si está cayendo
this.y+=this.velocidad; //Aumentamos Y
} else { //Si está parado...
if (this.vidaCopo) { //Y le queda vida...
this.vidaCopo-=1; //Le quitamos vida
} else { //Si no le queda vida
this.alpha-=0.1; //Lo vamos haciendo transparente
if (this.alpha<=0) {//Cuando ya no se vea...
//Lo eliminamos, quitando sus eventos
this.removeEventListener("added", iniciarCaida);
this.removeEventListener("enterFrame", caerCopo);
// y lanzando un evento que diga a la película que lo tiene que borrar
dispatchEvent(new Event("copoDerretido", true));
}
}
}
}
// Función para crear el numero aleatorio
private function num_aleatorio(min:Number ,max:Number) {
//Genera un número aleatorio dentro de un rango
max++;
max=max-min;
return min+(Math.floor((Math.random()*(max*10)))%max);
}
}
}
addEventListener(Event.ENTER_FRAME, nevar);
function nevar(event):void{
addChild(new Copo(estrella, fondo));//Creamos un copo y lo agregamos a la escena
}
addEventListener("copoDerretido", borrarCopo);
function borrarCopo(e:Event):void{
removeChild(Copo(e.target));
}
Síguenos en: Facebook Sobre aulaClic Política de Cookies
© aulaClic. Todos los derechos reservados. Prohibida la reproducción por cualquier medio.