Estoy haciendo un ejercicio en el que pulsando un tecla empieza nervar sobre un paisaje. Los copos son un simple mc en la biblioteca y los controlo con la clase Nieve.as:
Código ActionScript :
package {
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.Event;
import flash.events.TimerEvent;
public class Nieve extends MovieClip {
//Timer con la "duracion" de la nieve en el suelo
private var timer:Timer=new Timer(3000);
//A true cuando se ha fundido para removeChild
private var fundida:Boolean
public function Nieve() {
this.setFundida(false)
addEventListener(Event.ENTER_FRAME, caer);
}
//Cae la nieve
public function caer(evento:Event) {
x+=Math.random()*10-5;
y+=Math.random()*3+2;
if ( (parent.getChildByName("paisaje").hitTestPoint(x,y,true) ) ) {
removeEventListener(Event.ENTER_FRAME, caer);
timer.start();
timer.addEventListener(TimerEvent.TIMER, funde);
}
}
//"Funde" la nieve
public function funde(evento:TimerEvent):void {
while (alpha > 0) {
alpha -= 0.1;
}
this.setFundida(true)
}
private function setFundida(fundida:Boolean):void{
this.fundida = fundida
}
public function getFundida():Boolean{
return this.fundida
}
}
}En el fla tengo:
Código ActionScript :
var n:Nieve;
var nevar:Boolean;
stage.addEventListener(KeyboardEvent.KEY_DOWN, nevada);
function nevada(evento:KeyboardEvent) {
if (nevar==false) {
addEventListener(Event.ENTER_FRAME, crearNieve);
nevar=true;
} else {
removeEventListener(Event.ENTER_FRAME, crearNieve);
nevar=false;
}
}
function crearNieve(evento:Event) {
for (var i=0; i<1; i++) {
n = new Nieve();
n.scaleX=n.scaleY=Math.random()*0.2+0.2;
n.y=-10;
n.x=Math.random()*800;
n.addEventListener(Event.ENTER_FRAME, quitarNieve);
addChild(n);
}
}
//Pasamos el quitanieves :-)
function quitarNieve(evento:Event) {
if (n.getFundida()){
trace("se ha fundido y se puede eliminar")
removeChild(n)
}
}Como podeis ver cuando la nieve esta en el suelo 3 segundos se funde...y aqui viene el problema, y es que no se como poder hacer el removeChild para eliminar los copos ya "derretidos". He hecho la funcion quitarNieve() pero no funciona bien, n.getFundida() solo es true cuando "para" de nevar y se "funden" todos los copos. Y cuando pasa eso me da error removeChild(n)
No se si me he explicado bien, por favor alguien me puede ayudar??!!!
Gracias de antemano!
