Duplicación de valores en AS 2.0
Buenos dias;
Tengo un pequeño problema que no se porque me sucede, a ver si alguien me puede ayudar porque no veo la luz :(
Estoy programando un juego, tengo 5 iconos a mover con el raton y 5 bichos sobre los que tengo que poner encima los iconos anteriores para matarlos, cada vez que uno de ellos se situa en la posicion correcta encima del bicho a matar suma a la variable global ( _global.aciertos ) 1 punto. Cuando llegas a 5 puntos el juego se acaba, te felicita y pregunta por si quieres volver a jugar.
Aqui viene el problema, cuando le das a volver a jugar, en el primer fotograma, asigno valor 0 variable global "_global.aciertos", con tal de poder volver a jugar, pero no se porque, la suma la repite dos veces, pero lo mas curioso hace tantas sumas por click como veces acabes el juego, por ejemplo, si lo acabas 7 veces, la suma la hara 7 veces por click realizado.
En el primer fotograma, separado de todos los MCs, esta este codigo:
<code>
var Detector:Object = new Object();
Detector.onMouseUp = function() {
if (_root.mcJuego.mcKogenate.hitTest(_root.mcJuego.mcCorte)) {
_global.aciertos++;
trace("Acierto "+_global.aciertos+" del Kogenate");
}
else if (_root.mcJuego.mcBeneflur.hitTest(_root.mcJuego.mcLinfocitoADN)) {
_global.aciertos++;
trace("Acierto "+_global.aciertos+" del Beneflur");
}
else if (_root.mcJuego.mcZevalin.hitTest(_root.mcJuego.mcLinfocitoCD20)) {
_global.aciertos++;
trace("Acierto "+_global.aciertos+" del Zevalin");
}
else if (_root.mcJuego.mcMabcampath.hitTest(_root.mcJuego.mcLinfocitoCD52)) {
_global.aciertos++;
trace("Acierto "+_global.aciertos+" del Mabcampath");
}
else if (_root.mcJuego.mcRivaroxaban.hitTest(_root.mcJuego.mcBasura)) {
_global.aciertos++;
trace("Acierto "+_global.aciertos+" del Rivaroxaban");
}
};
Mouse.addListener(Detector);
//
stop();</code>
Como podeis comprobar hay un trace en cada if/else if, bien, cuando acabo la primera partida y me dispongo a jugar la segunda, tengo estos traces al mover un icono sobre su bicho:
Acierto 1 del Rivaroxaban
Acierto 2 del Rivaroxaban
¿ Alguien sabe porque lo puede hacer ?
Muchissimas gracias.
Usuario desconocido
¡ Cierto es !
¡ No me habia fijado en eso !
Muchissimas gracias :)
psycho
Es por el listener, al volver a jugar estas invocando 2 list eners, Detector de la primera vez y el Detector que has vuelto a crear la segunda vez.
Cuando vuelvas a jugar y pongas:
<code>_global.aciertos = 0</code>
Desactiva el listener:
<code>Mouse.removeListener(Detector)</code>