2016-09-20 48 views
1

即时通讯有一个问题,我把任何文本或甚至空白空间我仍然在框架170,因为你看到我把171框架在那里,如果我键入“因此”它在171,似乎就像它的工作正常,它只是即使我把错误的文本去帧170,我不能找到问题寿,我也不知道我是否应该做一个else语句,所以如果单词不在列表中它会去其他框架,感谢队友搜索框as3工作不正常

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循环增加的“i”的不管它是否可以找到该值或不并且正在使用我在此行gotoAndStop值(帧[I]);,你应该像这样使用gotoAndStop(frames [findInArray(searchtext)]); –

+0

嘿非常感谢你,它工作得很好,但现在它有一个错误,如果没有在数组列表中找到任何单词,是否有任何方法有其他语句,以确保如果他输入错误的单词我会去不同的告诉单词未找到的框架?谢谢你队友 –

+0

如果它找不到简单地在findInArray函数中返回-1,并检查结果,如果函数返回-1警告用户作为字未找到 –

回答

1

为什么你总是去框170:

让我们看看你的函数fl_MouseClickHandler_4

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 

为您的代码修复:
功能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]); 
} 

功能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 
} 

我希望这有助于...

编辑:

您不需要创建一个函数来查找数组中的值。您可以使用Array类内置方法indexOf()查找数组中项目的索引:有关更多信息,请参阅AS3 manual

theArray.indexOf(theValue); 

返回该值的索引。如果值不在数组中,则返回-1。

试验下面这个例子:

//# 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

先生你是一个英雄,好吧,我会尝试这个当我回家。非常感谢!干杯! –

+0

嘿,先生,所以我应该替换这个findInArray(searchtext);对这个theArray.indexOf(theValue); ? –

+0

@ JarvisLorenzD.PAlad看看编辑代码是否有帮助。 –