Comunidad de diseño web y desarrollo en internet online

resetear variables

Citar            
MensajeEscrito el 30 Sep 2008 03:11 pm
Hola a todos, como andan??

bueno, le traigo una duda, y es q hice este programita de prueba para un juego q hay q hacer, lo hice con ayuda de los chicos de aqui:

www.mattdg.com.ar/ejemplo.rar

la cuestion es q anda bien, el unico problema es q el primer juego se ejecuta correctamente, o sea, cuenta hasta 3 para abrir barreras, ahi comienza a contarse el tiempo, y al mismo tiempo a moverse el aro, una vez finalizado el tiempo, cuenta 3 seg hasta q la barrera se cierra, mientras se puede ir sumando puntos.
La cuestion es q yo puse, q al finalizar los 3 seg de cerrar la barrera, las variables se reinicien de esta forma:

Código :

/* TIEMPO CERRAR BARRERA*/

//variables
var tiempobarrera2:Number=0;


//funcion para contar el tiempo
frecuenciabarrera2=setInterval(barrera2,1000);

function barrera2(){
if (seg == tiempo_total) { 
_root.setS1a(true);
tiempobarrera2++

}
//detiene el intervalo
if (tiempobarrera2==3) {
   _root.setS1a(false);
   
   //Cerrar movimiento aro
      _root.setS3a(false);
      _root.setS4a(false);
   
   //RESETEAR VARIABLES
   //variables BARRA DE TIEMPO
      seg=0;
      barra._xscale = 0;
   //variables ABRIR BARRERA
      tiempobarrera=0;
   //variable CREDITOS
      coin=0;
   //variables MOVER ARO
      tiempoaro=0;
      suma=1;
   //variables de PUNTOS
      puntos=0;
   //FIN RESETEAR VARIABLES
      clearInterval(frecuenciabarrera2);
      
      }      
};


pero el problema viene, a q si yo ejecuto nuevamente el juego, sin vovler a generar el escript, los coins me los suma pero los tiempos nunca comienzan, es decir, no se puede volver a ejecutar y estado pensando, pero no logro saber como poner los valores en 0 y q se pueda volver a jugar sin problemas.

bueno, si pueden ayudarme se los agradeceria mucho, ya q con esto lo finalizo
desde ya gracias.
saludos a todos.

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 30 Sep 2008 08:54 pm
Yo se que tú lo entiendes muy bien porque eres el que lo está realizando, pero cuando vas a explicarlo a otras personas debes profundizar un poco más sino no se entiende lo que describes. Explica paso a paso que es lo que quieres lograr y que es lo que te sucede en este momento.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 30 Sep 2008 09:45 pm
hola, bueno, ahi en la direccion q deje: www.mattdg.com.ar/ejemplo.rar, estan los archivos del proyecto.
Supuestamente es un juego de basquet, el cual al insertarles 2 creditos (boton coin), se abre una barrera (abrir barrera) durante 3 seg, una vez q ese llega a 3. comienza a correr el tiempo de competencia (barra de tiempo) donde a partir del cual podemos sumar puntos (boton puntos), una vez finalizado el tiempo de competencia, comienza a cerrarse la barrera abierta al principio (cerrar barrera).
Ademas mientras esta el tiempo de competencia, hay un tiempo de movimiento del aro, el cual se moveria de un lado al otro y q se cortaria el movimiento al mismo tiempo q se corta el tiempo de cerrar barrera.
Una vez finalizado el tiempo de cerrarse la barrera, se reinciaria el juego y tendria q estar listo nuevamente para comenzar de nuevo una vez q se sumen 2 creditos.

La cuestion es q el primer juego funciona bien, y cuando cierra la barrera las variables vuelven a 0, pero sin embargo al kerer ejecutar nuevamente el juego, los coins llegan a 2 pero ninguno tiempo corre por lo tanto no funciona, y queria saber como poder hacer para q funcione infinitos juegos sin problemas.

Desde ya gracias por tu interes y espero haber contestado tu duda, si necesitas algo mas para poder ayudame no dudes y gracias por todo tu apoyo.

Gracias.
Adios

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 30 Sep 2008 10:37 pm
Bueno al final de la función, si se cumple la condición de tiempobarrera2 == 3 eliminas el setInterval, en que momento lo vuelves a crear cuando comienza tu juego de nuevo?

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 01 Oct 2008 02:33 am
no entendi bien a cual setInterval te referis, pero si es al q puse de referencia en el codigo, supeustamente, este tendria q ejecutarse una vez q finalizo, el tiempo q corria en la barra de tiempo, el cual habia iniciado cuando se abria la barrera.....
espero q esa sea lo q preguntaste, sino disculpame y te ocntestare nuevamente.
saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 01 Oct 2008 08:07 am
Me refiero a este setInterval que eliminas, como haces para que se vuelva a crear?

Código ActionScript :

clearInterval(frecuenciabarrera2);

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 01 Oct 2008 09:05 pm
hola, q yo sepa no lo vuelvo a generar en ningun momento.
este es todo el codigo que uso, esceptuando el de los 2 botones, q son propios, pero q solo hacen sumar 1 a coin y puntos.

Código :

/*-------------------------------------------------------------------------------------*/
/*TIEMPO BARRA*/

//variables  
var seg:Number = 0; 
var tiempo_total:Number = _root.tiempo; 
 
//funcion para contar el tiempo  
var frecuenciabarra:Number = setInterval(relojbarra, 1000); 
 
//---Poner la barra en escala 0 
barra._xscale = 0; 
 
function relojbarra():Void { 
 if (tiempobarrera==3) {
   seg++; 
    
   //---Asignarle una escala a la barra 
   var pCent:Number = seg / tiempo_total * 100; 
   barra._xscale = pCent; 
    
   //---Cuando llegue al final 
   if (seg == tiempo_total) { 
      clearInterval(frecuenciabarra);
     clearInterval(frecuenciaaro);
   }  
}  
}
/*-------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------*/
/* TIEMPO ABRIR BARRERA*/

//variables
var tiempobarrera:Number=0;


//funcion para contar el tiempo
frecuenciabarrera=setInterval(barrera,1000);

function barrera(){
if (coin>=2)
{
tiempobarrera++
_root.setS2a(true);
var tiempobarrera2:Number=0;
}
//detiene el intervalo
if (tiempobarrera==3) 
{
   _root.setS2a(false);
   clearInterval(frecuenciabarrera);
}
};
/*-------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------*/
/* TIEMPO CERRAR BARRERA*/

//variables
var tiempobarrera2:Number=0;


//funcion para contar el tiempo
frecuenciabarrera2=setInterval(barrera2,1000);

function barrera2(){
if (seg == tiempo_total) { 
_root.setS1a(true);
tiempobarrera2++

}
//detiene el intervalo
if (tiempobarrera2==3) {
   _root.setS1a(false);
   
   //Cerrar movimiento aro
      _root.setS3a(false);
      _root.setS4a(false);
   
   //RESETEAR VARIABLES
   //variables BARRA DE TIEMPO 
      seg=0;
      barra._xscale = 0;
   //variables ABRIR BARRERA
      tiempobarrera=0;
   //variable CREDITOS
      coin=0;
   //variables MOVER ARO
      tiempoaro=0;
      suma=1;
   //variables de PUNTOS
      puntos=0;
   //FIN RESETEAR VARIABLES
      clearInterval(frecuenciabarrera2);
      
      }      
};
/*-------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------*/
/*FUNCION: VALIDAR CREDITOS*/

//Variable de Creditos
   var coin:Number =0;
   
function coinEvent(oldVal, newVal) {
   
   _root.container.coinLight.gotoAndStop(newVal+1);
       if (newVal == 1)
       {
           coin++;
       }   
}
/*-------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------*/
//Variable del Movimiento del Aro 
   var tiempoaro:Number = 0;
   var suma:Number = 1;

/*FUNCION: MOVIMIENTO DEL ARO*/
var frecuenciaaro:Number = setInterval(relojaro, 1000); 
 
function relojaro():Void { 
 
   if (coin >= 2 and tiempobarrera==3) { 
 
      tiempoaro += suma; 
 
      if (tiempoaro == 5) { 
 
         suma = -1;
       _root.setS3a(false);
       _root.setS4a(true);
       
 
      } else if (tiempoaro == 0) { 
 
         suma = 1; 
       _root.setS3a(true);
       _root.setS4a(false);
       
 
      } 
   } 
} 
/*------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------*/
//Variable de Puntos
   var puntos:Number=0;

/*FUNCION: SUMAR PUNTOS (Entrada 5)*/
function e5aEvent(oldVal, newVal) {
   _root.container.salida1.gotoAndStop(newVal+1);
   if (coin>=2){
      if (newVal == 1){
   if (puntos%2==0 or puntos%3==0)
   { 
      
         puntos+=3;
   }
   else  
   {         
      puntos+=2;
   }
   }
   }
}
/*------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------*/

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 01 Oct 2008 09:51 pm
Tienes varios setIntervals y los eliminas en un momento dado, si quieres reiniciar la aplicación, aparte de poner las variables en 0 debes volver a iniciar los setIntervals, por ejemplo imagina que tengas una función que inicializa a un setInterval:

Realizaré el ejemplo con un solo setInterval, tu debes adaptar tu código a este método para que todos los setIntervals vuelvan a funcionar

Código ActionScript :

var frecuenciabarra:Number;

function reiniciar():Void{
    
    //---Reinicio las variables y comienzo el setInterval
    frecuenciabarra = setInterval(relojbarra, 1000); 

}


Así de esa manera cuando llame a "reiniciar" me pondrá las variables en 0 pero comenzará otra vez a funcionar el setInterval.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 01 Oct 2008 10:44 pm
hola, gracias por tu ayuda, la verdad es q lo trate de hacer, pero me sigue sin funcionar, no se cual es el error, esto es lo q puse:

Código :

/*-------------------------------------------------------------------------------------*/
/*TIEMPO BARRA*/

//variables  
var seg:Number = 0; 
var tiempo_total:Number = _root.tiempo; 
 
//funcion para contar el tiempo  
var frecuenciabarra:Number = setInterval(relojbarra, 1000); 
 
//---Poner la barra en escala 0 
barra._xscale = 0; 
 
function relojbarra():Void { 
 if (tiempobarrera==3) {
   seg++; 
    
   //---Asignarle una escala a la barra 
   var pCent:Number = seg / tiempo_total * 100; 
   barra._xscale = pCent; 
    
   //---Cuando llegue al final 
   if (seg == tiempo_total) { 
      clearInterval(frecuenciabarra);
     clearInterval(frecuenciaaro);
   }  
}  
}
/*-------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------*/
/* TIEMPO ABRIR BARRERA*/

//variables
var tiempobarrera:Number=0;


//funcion para contar el tiempo
frecuenciabarrera=setInterval(barrera,1000);

function barrera(){
if (coin>=2)
{
tiempobarrera++
_root.setS2a(true);
var tiempobarrera2:Number=0;
}
//detiene el intervalo
if (tiempobarrera==3) 
{
   _root.setS2a(false);
   clearInterval(frecuenciabarrera);
}
};
/*-------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------*/
/* TIEMPO CERRAR BARRERA*/

//variables
var tiempobarrera2:Number=0;


//funcion para contar el tiempo
frecuenciabarrera2=setInterval(barrera2,1000);

function barrera2(){
if (seg == tiempo_total) { 
_root.setS1a(true);
tiempobarrera2++

}
//detiene el intervalo
if (tiempobarrera2==3) {
   _root.setS1a(false);
   
   //Cerrar movimiento aro
      _root.setS3a(false);
      _root.setS4a(false);
   
   //RESETEAR VARIABLES
   //variables BARRA DE TIEMPO 
      seg=0;
      barra._xscale = 0;
   //variables ABRIR BARRERA
      tiempobarrera=0;
   //variable CREDITOS
      coin=0;
   //variables MOVER ARO
      tiempoaro=0;
      suma=1;
   //variables de PUNTOS
      puntos=0;
   //FIN RESETEAR VARIABLES
      clearInterval(frecuenciabarrera2);
      
      }      
};
/*-------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------*/
/*FUNCION: VALIDAR CREDITOS*/

//Variable de Creditos
   var coin:Number =0;
   
function coinEvent(oldVal, newVal) {
   
   _root.container.coinLight.gotoAndStop(newVal+1);
       if (newVal == 1)
       {
           coin++;
       }   
}
/*-------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------*/
//Variable del Movimiento del Aro 
   var tiempoaro:Number = 0;
   var suma:Number = 1;

/*FUNCION: MOVIMIENTO DEL ARO*/
var frecuenciaaro:Number = setInterval(relojaro, 1000); 
 
function relojaro():Void { 
 
   if (coin >= 2 and tiempobarrera==3) { 
 
      tiempoaro += suma; 
 
      if (tiempoaro == 5) { 
 
         suma = -1;
       _root.setS3a(false);
       _root.setS4a(true);
       
 
      } else if (tiempoaro == 0) { 
 
         suma = 1; 
       _root.setS3a(true);
       _root.setS4a(false);
       
 
      } 
   } 
} 
/*------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------*/
//Variable de Puntos
   var puntos:Number=0;

/*FUNCION: SUMAR PUNTOS (Entrada 5)*/
function e5aEvent(oldVal, newVal) {
   _root.container.salida1.gotoAndStop(newVal+1);
   if (coin>=2){
      if (newVal == 1){
   if (puntos%2==0 or puntos%3==0)
   { 
      
         puntos+=3;
   }
   else  
   {         
      puntos+=2;
   }
   }
   }
}
/*------------------------------------------------------------------------------------*/
/* PRUEBA REINICIO*/
   var frecuenciabarra:Number;
   var frecuenciabarrera:Number;
   var frecuenciabarrera2:Number;
   var frecuenciaaro:Number;
 
      function reiniciar():Void{ 
     
          //---Reinicio las variables y comienzo el setInterval 
          frecuenciabarra = setInterval(relojbarra, 1000);  
          frecuenciabarrera = setInterval(barrera, 1000);
         frecuenciabarrera2 = setInterval(barrera2, 1000);
         frecuenciaaro = setInterval(relojaro, 1000);
} 

/*------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------*/

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 02 Oct 2008 09:09 am
No no es eso lo que debes hacer, fíjate que has declarado dos veces todos los setIntervals, debes declararlos una sola vez y donde dice:

Código ActionScript :

//---Reinicio las variables y comienzo el setInterval 


Debes hacerlo, el comentario no hace nada, debes tu llamar a la función de poner las variables en 0 y después comenzar los setIntervals.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 02 Oct 2008 01:03 pm
hola elchininet, disculpame, yo q tratas de ayudarme y hasta ahora, me ha funcionado todo, pero esto q me dices no me doy cuenta, no entiendo como hacerlo funcionar.....
parece q fuera mas complicado, pero no entiendo donde declarara los setIntervar y como reiniciarlos....
desde ya te agradezco tu ayuda.
espero poder solucionar esto.
muchas gracias.
saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 02 Oct 2008 06:52 pm
Lo que te trataba de decir era algo como esto:

Código ActionScript :

/*------------------------------------------------------------------------------------*/
/* PRUEBA REINICIO*/
var frecuenciabarra:Number;
var frecuenciabarrera:Number;
var frecuenciabarrera2:Number;
var frecuenciaaro:Number;

var seg:Number;

var tiempo_total:Number;

var tiempobarrera:Number;
var tiempobarrera2:Number;

var coin:Number;

var tiempoaro:Number;
var suma:Number;

var puntos:Number;

function reiniciar():Void {
   
   //variables 
   seg = 0;
   
   tiempo_total = _root.tiempo;   
   
   //---Poner la barra en escala 0 
   barra._xscale = 0;
   
   tiempobarrera = 0;
   tiempobarrera2 = 0;
   
   coin = 0;
   
   tiempoaro = 0;   
   suma = 1;
   
   puntos = 0;
   
   frecuenciabarra = setInterval(relojbarra, 1000);
   frecuenciabarrera = setInterval(barrera, 1000);
   frecuenciabarrera2 = setInterval(barrera2, 1000);
   frecuenciaaro = setInterval(relojaro, 1000);
   
}


function relojbarra():Void {
   if (tiempobarrera == 3) {
      seg++;

      //---Asignarle una escala a la barra 
      var pCent:Number = seg / tiempo_total * 100;
      barra._xscale = pCent;

      //---Cuando llegue al final 
      if (seg == tiempo_total) {
         clearInterval(frecuenciabarra);
         clearInterval(frecuenciaaro);
      }
   }
}
/*-------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------*/
/* TIEMPO ABRIR BARRERA*/

function barrera() {
   if (coin >= 2) {
      tiempobarrera++;
      _root.setS2a(true);
   }
   //detiene el intervalo 
   if (tiempobarrera == 3) {
      _root.setS2a(false);
      clearInterval(frecuenciabarrera);
   }
}
/*-------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------*/
/* TIEMPO CERRAR BARRERA*/

function barrera2() {
   if (seg == tiempo_total) {
      _root.setS1a(true);
      tiempobarrera2++;

   }
   //detiene el intervalo 
   if (tiempobarrera2 == 3) {
      _root.setS1a(false);

      //Cerrar movimiento aro
      _root.setS3a(false);
      _root.setS4a(false);

      //RESETEAR VARIABLES
      //variables BARRA DE TIEMPO 
      seg = 0;
      barra._xscale = 0;
      //variables ABRIR BARRERA
      tiempobarrera = 0;
      //variable CREDITOS
      coin = 0;
      //variables MOVER ARO
      tiempoaro = 0;
      suma = 1;
      //variables de PUNTOS
      puntos = 0;
      //FIN RESETEAR VARIABLES
      clearInterval(frecuenciabarrera2);

   }
}

/*-------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------*/
/*FUNCION: VALIDAR CREDITOS*/

//Variable de Creditos

function coinEvent(oldVal, newVal) {

   _root.container.coinLight.gotoAndStop(newVal + 1);
   if (newVal == 1) {
      coin++;
   }
}

/*-------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------*/
//Variable del Movimiento del Aro 

/*FUNCION: MOVIMIENTO DEL ARO*/

function relojaro():Void {

   if (coin >= 2 and tiempobarrera == 3) {

      tiempoaro += suma;

      if (tiempoaro == 5) {

         suma = -1;
         _root.setS3a(false);
         _root.setS4a(true);


      } else if (tiempoaro == 0) {

         suma = 1;
         _root.setS3a(true);
         _root.setS4a(false);


      }
   }
}

/*------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------*/
//Variable de Puntos

/*FUNCION: SUMAR PUNTOS (Entrada 5)*/
function e5aEvent(oldVal, newVal) {
   _root.container.salida1.gotoAndStop(newVal + 1);
   if (coin >= 2) {
      if (newVal == 1) {
         if (puntos % 2 == 0 or puntos % 3 == 0) {

            puntos += 3;
         } else {
            puntos += 2;
         }
      }
   }
}


Nada funcionará si no comienzas la función reiniciaer(), puedes utilizarla para empezar todo o para reiniciarlo, esta función pondrá todas las variables en 0 y comenzará los setIntervals, no se si funcionará porque hay muchas cosas que no se que hacen como estas instrucciones:

Código ActionScript :

_root.setS2a(true);
_root.setS2a(false);


Esto es solo para que observes el método a proseguir, como te he dicho, no se si funciona exactamente como está, debes según todo tu código ver como lo adaptas. Lo que te quiero decir en realidad es que no copies y pegues sin analizarlo y postees que no funciona.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 02 Oct 2008 11:36 pm
bueno amigo, la verdad sos impresionante, por fin he podido finalizar el proyecto gracias a ti.
Al final me puse a leerlo a partir de los ejemplos y pude realizarlo.
este es el codigo final:

Código :

/*------------------------------------------------------------------------------------*/ 
/* PRUEBA REINICIO*/ 
var frecuenciabarra:Number; 
var frecuenciabarrera:Number; 
var frecuenciabarrera2:Number; 
var frecuenciaaro:Number; 
 
var seg:Number; 
 
var tiempo_total:Number; 
 
var tiempobarrera:Number; 
var tiempobarrera2:Number; 
 
var coin:Number; 
 
var tiempoaro:Number; 
var suma:Number; 
 
var puntos:Number; 
 
function reiniciar():Void { 
    
   //variables  
   seg = 0; 
    
   tiempo_total = _root.tiempo;    
    
   //---Poner la barra en escala 0  
   barra._xscale = 0; 
    
   tiempobarrera = 0; 
   tiempobarrera2 = 0; 
    
   coin = 0; 
    
   tiempoaro = 0;    
   suma = 1; 
    
   puntos = 0; 
    
   frecuenciabarra = setInterval(relojbarra, 1000); 
   frecuenciabarrera = setInterval(barrera, 1000); 
   frecuenciabarrera2 = setInterval(barrera2, 1000); 
   frecuenciaaro = setInterval(relojaro, 1000); 
    
}
reiniciar();
/*-------------------------------------------------------------------------------------*/ 
/*-------------------------------------------------------------------------------------*/  
function relojbarra():Void { 
   if (tiempobarrera == 3) { 
      seg++; 
 
      //---Asignarle una escala a la barra  
      var pCent:Number = seg / tiempo_total * 100; 
      barra._xscale = pCent; 
 
      //---Cuando llegue al final  
      if (seg == tiempo_total) { 
         clearInterval(frecuenciabarra); 
         clearInterval(frecuenciaaro); 
      } 
   } 
} 
/*-------------------------------------------------------------------------------------*/ 
/*-------------------------------------------------------------------------------------*/ 
/* TIEMPO ABRIR BARRERA*/ 
 
function barrera() { 
   if (coin >= 2) { 
      tiempobarrera++; 
      _root.setS2a(true); 
   } 
   //detiene el intervalo  
   if (tiempobarrera == 3) { 
      _root.setS2a(false); 
      clearInterval(frecuenciabarrera); 
   } 
} 
/*-------------------------------------------------------------------------------------*/ 
/*-------------------------------------------------------------------------------------*/ 
/* TIEMPO CERRAR BARRERA*/ 
 
function barrera2() { 
   if (seg == tiempo_total) { 
      _root.setS1a(true); 
      tiempobarrera2++; 
 
   } 
   //detiene el intervalo  
   if (tiempobarrera2 == 3) { 
      _root.setS1a(false); 
 
      //Cerrar movimiento aro 
      _root.setS3a(false); 
      _root.setS4a(false); 
 
      /*RESETEAR VARIABLES 
      //variables BARRA DE TIEMPO  
      seg = 0; 
      barra._xscale = 0; 
      //variables ABRIR BARRERA 
      tiempobarrera = 0; 
      //variable CREDITOS 
      coin = 0; 
      //variables MOVER ARO 
      tiempoaro = 0; 
      suma = 1; 
      //variables de PUNTOS 
      puntos = 0;*/
     reiniciar();
      //FIN RESETEAR VARIABLES 
      clearInterval(frecuenciabarrera2); 
 
   } 
} 
 
/*-------------------------------------------------------------------------------------*/ 
/*-------------------------------------------------------------------------------------*/ 
/*FUNCION: VALIDAR CREDITOS*/ 
 
//Variable de Creditos 
 
function coinEvent(oldVal, newVal) { 
 
   _root.container.coinLight.gotoAndStop(newVal + 1); 
   if (newVal == 1) { 
      coin++; 
   } 
} 
 
/*-------------------------------------------------------------------------------------*/ 
/*------------------------------------------------------------------------------------*/ 
//Variable del Movimiento del Aro  
 
/*FUNCION: MOVIMIENTO DEL ARO*/ 
 
function relojaro():Void { 
 
   if (coin >= 2 and tiempobarrera == 3) { 
 
      tiempoaro += suma; 
 
      if (tiempoaro == 5) { 
 
         suma = -1; 
         _root.setS3a(false); 
         _root.setS4a(true); 
 
 
      } else if (tiempoaro == 0) { 
 
         suma = 1; 
         _root.setS3a(true); 
         _root.setS4a(false); 
 
 
      } 
   } 
} 
 
/*------------------------------------------------------------------------------------*/ 
/*------------------------------------------------------------------------------------*/ 
//Variable de Puntos 
 
/*FUNCION: SUMAR PUNTOS (Entrada 5)*/ 
function e5aEvent(oldVal, newVal) { 
   _root.container.salida1.gotoAndStop(newVal + 1); 
   
     
         if (coin>=2 and newVal==1 and (puntos % 2 == 0 or puntos % 3 == 0)) { 
 
            puntos += 3; 
         } else if (coin>=2 and newVal==1) { 
            puntos += 2; 
         } 
      } 
 


te lo agradezco muchisisisismo......
tengo una duda mas, pero esto es sobre todo una cuestion de performance, en la parte de los puntos:

Código :

/*------------------------------------------------------------------------------------*/ 
//Variable de Puntos 
 
/*FUNCION: SUMAR PUNTOS (Entrada 5)*/ 
function e5aEvent(oldVal, newVal) { 
   _root.container.salida1.gotoAndStop(newVal + 1); 
   
     
         if (coin>=2 and newVal==1 and (puntos % 2 == 0 or puntos % 3 == 0)) { 
 
            puntos += 3; 
         } else { 
            puntos += 2; 
         } 
      } 

pero esto no cumple la condicion de q solo funcione cuando coin>=2

entonces probe esto:

Código :

/*------------------------------------------------------------------------------------*/ 
//Variable de Puntos 
 
/*FUNCION: SUMAR PUNTOS (Entrada 5)*/ 
function e5aEvent(oldVal, newVal) { 
   _root.container.salida1.gotoAndStop(newVal + 1); 
   
     
         if (coin>=2 and newVal==1 and (puntos % 2 == 0 or puntos % 3 == 0)) { 
 
            puntos += 3; 
         } else if (coin>=2 and newVal==1) { 
            puntos += 2; 
         } 
      } 

pero solo suma de a 3....



yo necesito q sume de a 3 y de a 2....por eso pongo esta condicion:
puntos % 2 == 0 or puntos % 3 == 0
que lo hace automaticamente como en el primer caso.
yo supongo q a ese, solo le hace falta un toke....
con eso ya no molestaria mas

desde ya muchas gracias.

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 03 Oct 2008 04:07 pm
No entiendo bien lo que quieres lograr, lo que dices en la condición es que si el la variable puntos es divisible por 2 o es divisible por 3 que te sume 3 puntos a esta y de no cumplirse entonces te sume 2 todo esto siempre que coin sea mayor o igual a 2 y que newVal de igual a 1, si es esto lo que deseas, es lo que debe estar haciendo tu script, de no ser así argumenta mejor que quieres lograr y que te sucede en este momento.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 03 Oct 2008 05:12 pm
hola, exactamente.
yo kiero q sume 2 y puntos, pero no hacerlo de forma consecutiva, es decir q no sume 2 despues 3 despues 2 depues 3 y asi sucesivamente, sino q ponele, 4x2 puntos y 1x3 puntos, despues 5x2 y 2x3 puntos....etc
pero para poder sumar puntos tiene q cumplir las condiciones de newVal==1 y coin>=2.

Este codigo es el q mejor funciona:

Código :

//Variable de Puntos 
 
/*FUNCION: SUMAR PUNTOS (Entrada 5)*/ 
function e5aEvent(oldVal, newVal) { 
   _root.container.salida1.gotoAndStop(newVal + 1); 
   
     
         if (coin>=2 and newVal==1 and (puntos % 2 == 0 or puntos % 3 == 0)) { 
 
            puntos += 3; 
         } else { 
            puntos += 2; 
         } 
      } 

o sea, ese el funcionaminto q quiero q haga, pero lamentablemente, esto funciona aun, cuando la condicion de coin no es mayor a 2, por lo cual, no puedo ponerlo en el codigo,....
he probado varias alternativas, pero ninguna funciona de la forma correcta....
por eso no se cual puede ser el error.

desde ya gracias por todos tus mensajes.

saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 03 Oct 2008 08:38 pm
Te ruego que me disculpes, pero este último post lo entendí menos que el anterior, cuando te dije que argumentaras mejor que quieres lograr, me refería a que te tomaras un tiempo, no para escribir, sino para pensar como decir lo que quieres y cuando encontraras una forma efectiva de que cualquier persona te entienda, entonces redactarlo de una forma muy sencilla y de ser posible leerlo varias veces a ver si se entiende, inclusive ayudarte de alguna imagen para mostrar lo que deseas. Estoy en la mejor disposición de ayudarte, pero si no entiendo lo que deseas lograr estoy de manos atadas.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 03 Oct 2008 08:50 pm
bueno, lo intentare una vez mas. disculpame por lo anterior mal escrito.
Este flash es un juego de basquet, por lo los puntos pueden sumar tanto 3 como 2 puntos.
Lo que yo quiero lograr es que siempre los lanzamientos sumen 2 puntos, pero un 25% de esos lanzamientos tiene q sumar 3 puntos, por lo q yo pude lograrlo poniendo esto:

Código :

puntos % 2 == 0 or puntos % 3 == 0

donde puntos es una variable.
la cuestion es que para q se sumen los puntos, tiene q validarse 2 condiciones:

Código :

coin>=2 and newVal==1
.

Espero hayas entendido un poco mas...sino tratare de redactarlo nuevamente.
muchos grascias.
saludos.-

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 03 Oct 2008 09:34 pm
Ves que sí podías hacerte entender bien, ahora entendí todo perfecto, el problema es que no debes poner las dos condiciones en el mismo lugar, sino que cuando "puntos" sea divisible por 2 entonces sumar dos y cuando sea divisible por 3 entonces sumar tres. Bueno lo que intenté decirte es algo como esto:

Código ActionScript :

function e5aEvent(oldVal, newVal) {
   _root.container.salida1.gotoAndStop(newVal + 1);

   if (coin >= 2 && newVal == 1) {
      
      if(puntos % 2 == 0){
         
         puntos += 2;
         
      }else if(puntos % 3 == 0){
         
         puntos += 3;
         
      }
      
   }
      
}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 04 Oct 2008 01:26 am
hola amigo, ya he probado esta alternativa q tu me propones, y no funciona, ya q las condiciones solo producen que se sume de a 2 los puntos solamente, porq como veras, por ejemplo 6%2==0 y 6%3==0, por lo q siempre sumara de a 2, nunca llega la condicion para q sume de a 3....por eso es mas complicado de lo q parece.....
yo todavia no encuentro una q funcione correctamente con una sola varible...tendremos q seguir trabajando, desde ya muchas gracias...
saludos

espero solucionarlo

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 04 Oct 2008 04:14 pm
bueno amigo, he encontrado otra forma de realizar lo q deseaba, si bien, es menos controlable funciona perfecto lo q kiero hacer:

Código :

function e5aEvent(oldVal, newVal) 
{ 
   _root.container.salida1.gotoAndStop(newVal + 1); 
   
 var aux=random(50);
     
         if (coin>=2 and newVal==1 and (aux%3==0)) 
      {
         puntos+=3;
       }
      else if (coin>=2 and and newVal==1)
      {
           puntos += 2;
        }

}


Muchas gracias por toda tu ayuda.
Saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 04 Oct 2008 06:32 pm
El problema es que no me fijé que la condición se hacía con la misma variable puntos, pensé que era otra variable, si utilizas la misma puntos se suma de dos en dos nunca iba a ser divisible entre tres, no tenía nada que ver el número 6 en específico, mirando tu función no hace falta que le des un random de 50, solo dale uno de 10 y por otro lado siempre va a sumar puntos o de a 2 o de a 3 y me parece que tratándose de un juego de basketball alguna tiene que fallar, por lo tanto puedes dejarlo de la misma manera que te había dicho lo que creando el aleatorio de tu función:

No utilices "and" quedó eliminado desde flash 5, si estás trabajando con AS2 utiliza "&&", de la misma manera no utilices random(), en su lugar utiliza Math.random()

Código ActionScript :

function e5aEvent(oldVal, newVal) {
   
   _root.container.salida1.gotoAndStop(newVal + 1);

   var aux:Number = Math.round(Math.random() * 10);

   if (coin >= 2 && newVal == 1) {
      
      if(aux % 2 == 0){
         
         puntos += 2;
         
      }else if(aux % 3 == 0){
         
         puntos += 3;
         
      }
      
   }

}


Esta es la tabla de resultados depende del número aleatorio:


aleatorio 1 - Fallo en el tiro
aleatorio 2 - Canasta vale 2
aleatorio 3 - Canasta vale 3
aleatorio 4 - Canasta vale 2
aleatorio 5 - Fallo en el tiro
aleatorio 6 - Canasta vale 2
aleatorio 7 - Fallo en el tiro
aleatorio 8 - Canasta vale 2
aleatorio 9 - Canasta vale 3
aleatorio 10 - Canasta vale 2

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.