Ver Mensaje Individual
  #14 (permalink)  
Antiguo 24/02/2016, 14:06
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: boton doble funcion

Creo que si se va a reproducir el sonido según una condición dentro del temporizador, no será necesaria la función PlaySound(). En cuanto a la paralización de la cuenta regresiva utilizando el mismo botón, puedes utilizar una variable global en la cual se establecerá un valor inicial, por ejemplo, el valor booleano true; luego, cuando se ejecute la función, evalúa el valor de dicha variable; si es true, ejecutas el temporizador y cambias el valor de la variable por false, y cuando vuelvas a pulsar el botón una vez que ya esté ejecutándose la cuenta regresiva, establece el valor de la variable global en true para que cuando se vuelva a ejecutar el temporizador (al ser cíclico, se volverá a ejecutar automáticamente), detectes dentro del mismo el valor de la variable global, encontrando que su valor ahora es true y, por ende, se detendrá la ejecución del temporizador.

Código Javascript:
Ver original
  1. var control = true; //La variable global
  2.  
  3. function cronometro() {
  4.     if (control){
  5.         var count = 20,
  6.             number = document.getElementById('numero'),
  7.             audio1 = document.getElementById("audio1"),
  8.             audio2 = document.getElementById("audio2"),
  9.             intervalo = setInterval(function(){
  10.                 if(count == 0 || control){
  11.                     clearInterval(intervalo);
  12.                     audio2.play();
  13.                     return;
  14.                 }
  15.                 count--;
  16.                 number.innerHTML = count;
  17.                 if (count == 10){
  18.                     audio1.play();
  19.                 }
  20.             }, 1000);
  21.         control = false;
  22.     }
  23.     else{
  24.         control = true;
  25.     }
  26. }

Para evitar que se ejecuten las demás instrucciones una vez detenido el temporizador, se termina la ejecución de la función mediante la palabra reservada return.

Y solo como consejo, la próxima vez trata de mostrar solo la parte crítica del código. Cuando la gente ve bloques grandes de código, se desanima y decide no ayudar. No es algo que ocurre con todos pero sí con muchos; además, analizar código que no tiene que ver con el problema, solo conlleva a una pérdida de tiempo.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand