2012-10-23 6 views
1

Donc, voici ce que j'essaie de faire, et franchement, je crois que cela devrait être évident, mais je ne peux pas le comprendre. Je crée une simulation d'Intelligence Artificielle très simple. Et dans cette simulation, il y a une boîte de saisie en bas de l'écran (appelée "entrée" exactement). "input" a une variable dans ses propriétés qui s'appelle "inbox" (exactement). À l'aide d'un écouteur de touche, le script appelle une fonction lorsque le bouton Entrée est enfoncé. Cette fonction a 2 instructions if et une instruction else qui dicte les réponses de l'IA (appelée "nistra"). Le problème est le suivant: lorsque je tape ce que je veux dire, et que j'appuie sur entrée, il utilise toujours la seconde réponse ("lockpick" dans le code ci-dessous). J'ai essayé des variantes sur le code mais je ne vois toujours pas la solution. Je crois que le problème est que la variable "typein" contient toutes les informations de format de la boîte de texte ainsi que la variable, mais je pourrais me tromper, cette information est ici aussi, sous le code lui-même. Toute aide que je pourrais obtenir serait grandement appréciée.zone de texte de saisie d'actionscript 2.0

var typein = ""; //copies the text from inbox into here, this is what nistra responds to 
var inbox = ""; //this is where the text from the input text box goes 
var respond = ""; //nistra's responses go here 
my_listener = new Object(); // key listener 
my_listener.onKeyDown = function() 
{ 
    if(Key.isDown(13)) //enter button pressed 
    { 
     typein = inbox; // moves inbox into typein 
     nistraresponse(); // calles nistra's responses 
    } 
    //code = Key.getCode(); 
    //trace ("Key pressed = " + code); 
} 

Key.addListener(my_listener); // key listener ends here 

nistraresponse = function() // nistra's responses 
{ 
    trace(typein); // trace out what "typein" holds 
    if(typein = "Hello") // if you type in "Hello" 
    { 
     respond = "Hello, How are you?"; 
    } 
    if(typein = "lockpick") // if you type in "lockpick" 
    { 
     respond = "Affirmative"; 
    } 
    else // anything else 
    { 
     respond = "I do not understand the command, please rephrase"; 
    } 
    cntxtID = setInterval(clearnistra, 5000); // calls the function that clears out nistra's response box so that her responses don't just sit there 
} 

clearnistra = function() // clears her respond box 
{ 
    respond = ""; 
    clearInterval(cntxtID); 
} 

// "typein" traces sur les éléments suivants

<TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="Times New Roman" SIZE="20" COLOR="#FF0000" LETTERSPACING="0" KERNING="0">test</FONT></P></TEXTFORMAT> 

Répondre

0

Depuis ActionScript est basé sur ECMAScript Je suis assez sûr que vous devez utiliser == au lieu de = pour la comparaison de l'égalité.

En ce moment, votre code fonctionne comme ceci:

if(typein = "Hello") { // assign "Hello" to typein. always true. 
    respond = "Hello, How are you?"; 
} 
if(typein = "lockpick") { // assign "lockpick" tot ypein. always true. 
    respond = "Affirmative"; 
} 
// the else block is always false for obvious reasons 

Alors il vous suffit de changer le code comme ceci:

if(typein == "Hello") { 
    respond = "Hello, How are you?"; 
} 
else if(typein == "lockpick") { 
    respond = "Affirmative"; 
} 
else { 
    respond = "I do not understand the command, please rephrase"; 
} 
+0

Malheureusement, cela ne fonctionne pas, à l'aide que le changement a commencé à répondre simplement à tout avec l'autre cas. "Je ne comprends pas". Même si c'était une entrée correcte. – user1769760

+0

Je tiens également à souligner que je viens de corriger ce qu'il trace, il a semblé coller les mauvaises informations lorsque j'ai posté la question pour la première fois. – user1769760

+0

Ok, je suis en train de jouer avec, et j'ai ajouté 3 boutons qui font essentiellement la même chose sans avoir à taper la commande. Voici le code pour les boutons. b_hello.onRelease = function() { \t typein = "Bonjour"; \t nistraresponse(); \t trace ("calling"); } b_lock.onRelease = fonction() { \t typein = "lockpick"; \t nistraresponse(); } b_dontunderstand.onRelease = function() { \t typein = "ne l'obtient pas"; \t nistraresponse(); } Cela fonctionne donc correctement – user1769760

Questions connexes