searchbox as3工作不正常



我遇到了一个问题,无论我放了什么文本,甚至空格,我都会放在第170帧,正如你所看到的,我把171帧放在那里,如果我键入"因此",它会放在171帧,看起来它工作得很好,只是即使我放错了文本,它也会放在170帧,我找不到问题,我也不知道我是否应该做一个其他的声明,所以如果这个词不在列表中,它会转到其他帧,谢谢

 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;
}

为什么总是转到第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手册

theArray.indexOf(theValue);

返回Value的索引。如果Value不在Array中,则返回-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] );
    }
}

最新更新