2016-09-20 2 views
1

Ich habe ein Problem, wo auch immer Text oder sogar Leerzeichen ich setze ich noch in Frame 170 gehen, wie Sie sehen, ich 171 Frame dort setzen, und wenn ich "daher" es gehe in 171, scheint wie es gut funktioniert, es ist sogar, ich habe falsch geschrieben, es geht zu Frame 170, ich kann das Problem tho nicht finden, auch ich weiß nicht, ob ich eine else Anweisung machen sollte, wenn das Wort nicht in der Liste ist, wird es zu anderen Rahmen gehen paaren danksearchbox as3 funktioniert nicht richtig

var i:int = 0; 
var names:Array = new Array("therefore","disciples","nations","baptizing","father","son","holy spirit"); 
var frames:Array = new Array("171","170","170","170","170","170","170","170"); 

button_140.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler_4); 

function fl_MouseClickHandler_4(event:MouseEvent):void 
{ 
var searchtext:String = searchtext.text.toLowerCase(); 
findInArray(searchtext); 
gotoAndStop(frames[i]); 
} 

function findInArray(str:String):int 
{ 
for(i=0; i < names.length; i++) 
{ 

     if(names[i] == str) 
     { 
    return i; 
} 
} 
return 0; 
} 
+1

for-Schleife erhöht Wert von "i" ganz gleich, ob es um den Wert oder nicht finden kann und Sie i in dieser Zeile gotoAndStop (frames [i]) ;, verwenden Sie sollten es wie folgt verwenden gotoAndStop (frames [findInArray (suchtext)]); –

+0

hey vielen Dank es funktioniert sehr gut, aber jetzt hat es einen Fehler, wenn kein Wort in der Array-Liste gefunden wird, gibt es eine Möglichkeit, eine andere Anweisung zu haben, um sicher zu gehen, wenn er falsches Wort eingibt Rahmen, der das Wort nicht gefunden sagt? Danke, Kumpel –

+0

Wenn es nicht finden kann einfach zurück -1 in findInArray-Funktion und überprüfen Sie das Ergebnis, wenn Funktion -1 Alarm an den Benutzer als Wort nicht gefunden –

Antwort

1

warum immer Sie gehen 170 einzurahmen:

wir fl_MouseClickHandler_4 sehen Ihre Funktion:

findInArray(searchtext);//string won't be found so "i" would be 7 (the last index in array) 
gotoAndStop(frames[i]);//so it goes to frame 170 

ein Update für Ihren Code:
die Funktion fl_MouseClickHandler_4:

function fl_MouseClickHandler_4(event:MouseEvent):void 
{ 
var searchtext:String = searchtext.text.toLowerCase(); 
var index:int=findInArray(searchtext); 

if(index==-1){ 
    //do something when frame not found 
} 
else{ 
    gotoAndStop(frames[index]); 
} 

die Funktion findInArray:

function findInArray(str:String):int 
{ 
for(i=0; i < names.length; i++) 
{ 

    if(names[i] == str) 
    { 
return i;//return the found index 
} 
} 
return -1;//return -1 if nothing found 
} 

Ich hoffe, das hilft ...

Edit:

Sie müssen keine Funktion ausführen, um einen Wert in Ihrem Array zu finden. Sie können Array Klasse integrierte Methode indexOf() verwenden, um den Index eines Elements in einem Array zu finden: siehe AS3 manual für weitere Informationen.

theArray.indexOf(theValue); 

gibt den Index von theValue zurück. Wenn theValue nicht im Array ist, wird -1 zurückgegeben.

-Test in diesem Beispiel unter:

//# declare variables outside of function (make once & re-use) 
var searchtext:String = ""; 
var index:int = 0; 

//# after updating searchtext string with user-text then run function below 

function fl_MouseClickHandler_4(event:MouseEvent):void 
{ 
    searchtext = searchtext.text.toLowerCase(); 
    index = names.indexOf(searchtext); //test with "holy spirit" 

    if(index == -1) 
    { 
     trace("index is : -1 : No match found"); 
     //do something when frame not found 
    } 
    else 
    { 
     trace("index is : " + index + " ::: result is : " + (frames[index])); 
     gotoAndStop(frames[index]); 
    } 
} 
+0

Sir Sie sind ein Held, ok ich werde versuchen, wenn ich nach Hause kam. Vielen Dank Kumpel! Prost! –

+0

Hey Sir, sollte ich das findInArray (Suchtext) ersetzen; dazu theArray.IndexOf (theValue); ? –

+0

@ JarvisLorenzD.PAlad sehen, ob die Bearbeitung mit Code Ihnen hilft. –