Posteo el codigo
Código :
import flash.events.KeyboardEvent;
var coches:coche;
var rivaleses:rivales;
// abajo amigo ,var rivaleses:rivales= new rivales();
var velocidadJuego:uint;
var crearIDenemigo:uint;
var izquierda:Boolean;
var derecha:Boolean;
var arriba:Boolean;
var abajo:Boolean;
var timer:Timer = new Timer(1000,1);
var numerodevidas:Number= 3
////////////////////////////////////////////////////////////////////////
/* BLOQUEADORES PARA QUE TUERZA Y NO RUEDE */
var inclinadoIzq:Boolean;
var inclinadoDer:Boolean;
// PARA SABER CUANDO SUELTO TECLA Y NO ESTA PULSADA
var pulsadoLeft:Boolean;
var pulsadoRight:Boolean;
//PARA IMPEDIR QUE CUANDO YO QUIERA
//QUE AL SOLTAR LA TECLA LA RANA VUELVA A SU POSICION
//ESTA SE PONGA A ROTAR PARA EL OTRO LADO SIN PARAR
//EN TRUE ESTA ACTIVADO
var bloqueadorRight:Boolean=true;
var bloqueadorLeft:Boolean=true;
////////////////////////////////////////////////////////////////////////
function iniciarJuego():void {
//SPAWNEO A MI PERSONAJE
coches=new coche();
//LA POSICION DE MI PERSONAJE
coches.x=300;
coches.y=370;
addChild(coches);
coches.chispasizq.visible=false;
coches.chispasder.visible=false;
velocidadJuego=500;
crearIDenemigo=setInterval(crearID,velocidadJuego);
Mouse.hide();
stage.stageFocusRect=false;
stage.focus=stage;
//YA ESTAMOS SOBRE EL TECLADO EN SI
stage.addEventListener(KeyboardEvent.KEY_DOWN, presionoTecla, false, 0, true);
stage.addEventListener(KeyboardEvent.KEY_UP, sueltoTecla, false, 0, true);
//EL LISTENER PARA LA FUNCION MOVER QUE VA A ESCUCHAR A CADA FRAME
stage.addEventListener(Event.ENTER_FRAME, mover, false, 0, true);
}
function mover(e:Event):void {
if (derecha&&inclinadoDer==false) {
coches.rotation+=20;
//CON inclinadoDer Y EN TRUE YA SE MARCA QUE SE HIZO
//Y NO VUELVA A HACERSE GRACIAS QUE EL IF LO PIDE
//EN FALSE
inclinadoDer=true;
}
if (derecha) {
coches.x+=9;
//MUEVE EN X Y AL ESCALAR CON +1 ES LO CONTRARIO AL -1
//QUE SUCEDE CON LA IZQUIERDA QUE ES COMO HACER FLIP
//coches.scaleX=+1;
//QUIERO QUE LA POSICION SE ARREGLE CUANDO SUELTO (DERECHA)
pulsadoRight=true;
//SACO EL BLOQUEO
bloqueadorRight=false;
} else {
pulsadoRight=false;
}
//CUANDO ESTA SIN EL BLOQUEO Y LA TECLA DESPULSADO {
if (pulsadoRight==false&&bloqueadorRight==false) {
//ES ROTACION -10 PORQUE AL HACER (derecha) LE SUME +10
coches.rotation-=20;
//Y LUEGO DE QUE ARREGLE LA POSCION PONGO A
//bloqueadorRight EN TRUE PARA QUE NO SIGA HACIENDO -10
//GRACIAS A LA CONDICION DEL IF,QUE LO PIDE EN FALSE
bloqueadorRight=true;
inclinadoDer=false;
}
//////////////////////TODO LO MISMO PARA LA IZQUIERDA AHORA
//////////////////////AL REVES EL MOV. EN X Y LA ROTACION
if (izquierda) {
coches.x-=9;
pulsadoLeft=true;
//SCALE EN -1 PORQUE LA RANA
//DE POR SI YA VIENE DE LADO DERECHO
//coches.scaleX=-1;
bloqueadorLeft=false;
} else {
pulsadoLeft=false;
}
if (izquierda&&inclinadoIzq==false) {
coches.rotation-=20;
inclinadoIzq=true;
}
if (pulsadoLeft==false&&bloqueadorLeft==false) {
coches.rotation+=20;
bloqueadorLeft=true;
inclinadoIzq=false;
}
if (arriba) {
coches.y-=5;
}
if(abajo) {
coches.y+=4;
}
//PA QUE NO SE LAS PIQUE DEL STAGE
if (coches.x>stage.stageWidth-coches.width/2 - 95) {
coches.x-=10;
coches.chispasder.visible=true;
}else{
coches.chispasder.visible=false;
}
if (coches.x<coches.width/2 + 95) {
coches.x+=10;
coches.chispasizq.visible=true;
}else{
coches.chispasizq.visible=false;
}
if (coches.y>stage.stageHeight-coches.height/2) {
coches.y-=4;
}
if (coches.y<0 + coches.height/2) {
coches.y+=5;
}
}
function sueltoTecla(event:KeyboardEvent):void {
switch (event.keyCode) {
case Keyboard.LEFT :
izquierda=false;
break;
case Keyboard.RIGHT :
derecha=false;
break;
case Keyboard.UP :
arriba=false;
break;
case Keyboard.DOWN :
abajo=false;
break;
default :
break;
}
}
function presionoTecla(event:KeyboardEvent):void {
switch (event.keyCode) {
case Keyboard.LEFT :
izquierda=true;
break;
case Keyboard.RIGHT :
derecha=true;
break;
case Keyboard.UP :
arriba=true;
break;
case Keyboard.DOWN :
abajo=true;
break;
default :
break;
}
}
function crearID():void {
rivaleses=new rivales();
var espacioalaizq:int= 0 + pasto1.width + borde1.width + rivaleses.width/2;
var espacioalader:int= stage.stageWidth - (pasto2.width + borde2.width + rivaleses.width/2);
var num:int = Math.floor(Math.random() * (espacioalader - espacioalaizq + 1)) + espacioalaizq;
//QUE ESTE EN Y FUERA DE LA PANTALLA Y ALEATORIAMENTE EN X
rivaleses.y=10;
rivaleses.x= num;
rivaleses.addEventListener(Event.ENTER_FRAME,dropEnemy);
//rivaleses.addEventListener(Event.ENTER_FRAME,dropEnemy);
// ESTO ES PARA AGREGARLOA LA DISPLAY LIST Y QUE APAREZCA SINO NO CAE
miniauto.addEventListener(Event.ENTER_FRAME,avanzaMini);
addChild(rivaleses);
//rivaleses.addEventListener(Event.ENTER_FRAME, vidas);
//coches.addEventListener(Event.ENTER_FRAME, vidas);
//stage.addEventListener(Event.ENTER_FRAME, vidas);
}
function dropEnemy(e:Event):void {
//esto es para hacer mas facil la caida y que caiga de a 10 x frame
//y se le podria agregar cosas de hit detection
// CADA movieclip clase CAYENDO esta observado por el enterframe
var caer:rivales=rivales(e.target);
//PARA LA VELOCIDAD DE LA CAIDA DE LOS ENEMIGOS
//A MAYOR VALOR MAS RAPIDO CAEN
caer.y+=10;
if (caer.hitTestObject(coches) && coches.alpha== 1) {
//coches.visible=false;
coches.alpha= 0
numerodevidas-=1;
//trace(numerodevidas);
vidas();
}
}
function avanzaMini(e:Event):void {
if(miniauto.hitTestObject(bandera.bandera_llegada)) {
miniauto.removeEventListener(Event.ENTER_FRAME,avanzaMini);
clearInterval(crearIDenemigo);
timer.addEventListener(TimerEvent.TIMER,llamame_a_la_otra);
timer.start();
}else{
miniauto.y-=0.5;
}
}
function llamame_a_la_otra(e:TimerEvent):void{
llegada_grande.addEventListener(Event.ENTER_FRAME,banderaCuadros);
}
function banderaCuadros(e:Event):void {
llegada_grande.y+=17;
if(coches.hitTestObject(llegada_grande.llegada)) {
llegada_grande.removeEventListener(Event.ENTER_FRAME,banderaCuadros);
rivaleses.removeEventListener(Event.ENTER_FRAME,dropEnemy);
removeChild(rivaleses);
stage.removeEventListener(Event.ENTER_FRAME, mover);
rayas.stop();
coches.chispasder.visible=false;
coches.chispasizq.visible=false;
}
}
function vidas():void {
coches.x=300;
coches.y=300;
///////ACA //TENGO //MI //PROBLEMA///////////////////////////////////////////
if(coches.alpha<1){
coches.alpha+=0.1;
}
///////ACA //ESTABA //MI //PROBLEMA////////////////////////////////////////////
if (numerodevidas== 2){
vida3.visible=false;
}
if (numerodevidas== 1){
vida2.visible=false;
}
if (numerodevidas== 0) {
vida1.visible=false;
}
//coches.alpha=0.3;
/*var trasparentandose:Array=new Array("0.1","0.9","0.1","0.9","0.1","0.9","0.1","0.9");
for(var i = 0; i < trasparentandose.length; i++){
var numeros = trasparentandose;
coches.alpha= numeros;
}
*/
}
iniciarJuego()El problema yo lo tengo en la funcion Vidas, lo que esta marcado entre /////////////porque no me lo hace funcionar mas de una vez, o sea detecta UNA SOLA VEZ la colision y hace el truquito de la transparencia pero con las demas vidas nada.. y quise hacerlo mediante un listener en la funcion dropenemy pero me da peor resultado. Puede tambien ser que el problema este en otro lado '???
Gracias, Lio
