JavaScript - Evitar que se reinicie el valor de una variable en Javascript.

 
Vista:
sin imagen de perfil

Evitar que se reinicie el valor de una variable en Javascript.

Publicado por Carlos (3 intervenciones) el 18/11/2016 05:23:10
Saludos. Este es mi primer tema. Estoy haciendo un programa con reconocimiento de voz. Va a manejar 3 palabras claves: Activar (Habilita el reconocimiento de voz para las otras dos palabras), Apagar (Mostrar un mensaje de apagado) y Prender (Mostrar un mensaje de prendido). No me puede reconocer las palabras Prender y Apagar si previamente no he dicho Activar.

Declaré una variable ActVoz=0 en Javascript. Puse que cuando se reconozca la palabra Activar cambie el valor de ActVoz a 1. Posterior que pregunte si ActVoz es igual a 1 que detecte las palabras Apagar y Prender cuando las diga. El problema radica en que, como yo supongo, html y javascript cicla todo el código desde el principio y por lo tanto, hace que ActVoz vuelva a ser 0. ¿Alguien sabe como evitar esto? La verdad es que soy relativamente nuevo en esto y tal vez tenga una respuesta sencilla. Espero que me hayan entendido. Les coloco el código. Los comandos de voz se reconocen y todo, muestran el mensaje, los probé sin la condición de ActVoz y funcionan. Adjunte la librería para reconocimiento de voz por si alguien quiere probarlo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<!DOCTYPE HTML>
<html lang="es">
<head>
<meta charset="UTF-8"/>
<title>Reconocimiento de voz</title>
 
<script type="text/javascript" src="annyang.min.js"></script>
<script>
var ActVoz=0;
</script>
 
</head>
<body>
 
<script type="text/javascript">
window.onload = function(){
annyang.setLanguage('es-CR');
 
    if (annyang) {
 
	     var Comando0 = {
            'Activar': function() {
                alert('Activar Voz');
				ActVoz=1;
            }
        };
 
			if (ActVoz==1){
        var Comando1 = {
            'Apagar': function() {
                alert('Apagar Sistema');
            }
        };
		var Comando2 = {
            'Prender': function() {
                alert('Prender Sistema');
            }
        };
		}
        annyang.addCommands(Comando0);
		annyang.addCommands(Comando1);
		annyang.addCommands(Comando2);
        annyang.start();
    }
}
</script>
 
<h1>Reconocimiento de voz</h1>
 
</body>
</html>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Evitar que se reinicie el valor de una variable en Javascript.

Publicado por Carlos (3 intervenciones) el 19/11/2016 01:54:02
Es que no recargo la página. Lo que pasa es que, por lo que entiendo, es como si todo el código estuviese en un ciclo infinito y el valor de ActVoz sólo se modifica cuando reconoce mi voz, pero después al ser un ciclo, empieza a ejecutarse el código desde el principio y ActVoz vuelve a su valor original. Espero darme a entender :( No es como si fuese un programa donde inicializo variables y el programa principal se ejecute en un While(true), apartado de la inicialización de variables.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Evitar que se reinicie el valor de una variable en Javascript.

Publicado por Carlos (3 intervenciones) el 19/11/2016 03:56:35
Ya vi cuál era mi error. La variable no se reinicia, disculpen. Cuando el valor cambia si se mantiene, el problema estaba en que no interpreté bien las funciones en javascript cuando eran llamadas. Coloqué el condicional dentro de las funciones para que no me ejecutase su contenido sí no cumplía la condicional y viceversa y funcionó. Cuando la condición iba fuera sólo se quedaba con el primer valor de ActVoz al momento de ser llamada la función principal la cuál es al momento de inicializar la página, por eso después no me dejaba acceder a las otras funciones después de cambiarle el valor a ActVoz.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
if (annyang) {
 
    var Comando0 = {
        'Activar': function() {
			ActVoz=1;
			alert('Reconocimiento de voz activado');
        }
    };
 
 
    var Comando1 = {
        'Apagar': function() {
				if (ActVoz==1){
            alert('Apagar Sistema');
			}
        }
    };
	var Comando2 = {
        'Prender': function() {
				if (ActVoz==1){
            alert('Prender Sistema');
			}
        }
    };
 
	var Comando3 = {
        'Desactivar': function() {
			ActVoz=0;
			alert('Reconocimiento de voz desactivado');
        }
    };
 
    annyang.addCommands(Comando0);
	annyang.addCommands(Comando1);
	annyang.addCommands(Comando2);
	annyang.addCommands(Comando3);
    annyang.start();
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar