AS2 - 检查array [x]名称是否等于某些文本

时间:2011-11-03 14:36:22

标签: arrays text for-loop actionscript-2

我做错了什么?

代码:

sample_txt.text = "sat";
var myArray:Array = new Array ("the", "cat", "sat", "on", "the", "mat");
arrsLength = Number(myArray.length);
for (var i = 0; i<arrsLength; i++){

        ...some stuff...

    btn.onPress=function(){
        if(myArray[i]==sample_txt.text){
            trace (text found!);
        }else{
            trace (text not found!);
        }
    }
}

输出:

text not found!

我需要做的是检查输入文本字段中的文本是否等于其中一个数组值,并且运行特定函数取决于结果。

此致

阿图尔。

1 个答案:

答案 0 :(得分:1)

问题出在可见性和'onPress'处理程序声明中。你应该在'for'循环之外声明'onPress'处理程序,因为每次循环迭代都会重新处理你的处理程序。事件如果您将修复可见性问题,那么'onPress'处理程序将始终将'myArray [i]'等于最后一个数组元素值。

所以你应该这样做:

    var btn:MovieClip = this.createEmptyMovieClip("btn", 100);
    btn.beginFill(0xebebeb, 100);
    btn.moveTo(0, 0);
    btn.lineTo(0, 100);
    btn.lineTo(100, 100);
    btn.lineTo(100, 0);
    btn.lineTo(0, 0);
    btn.endFill();

    var sample_txt:Object = {text: "sat"};

    var myArray:Array = new Array ("the", "cat", "sat", "on", "the", "mat");
    var arrsLength:Number = myArray.length;
    for (var i:Number = 0; i < arrsLength; i++) {
      //... some stuff...
    }

    btn.onPress = function() {
      for (var i:Number = 0; i < myArray.length; i++) {
        if (myArray[i] == sample_txt.text) {
          trace("text found!");
          return;
        }
      }
      trace("text not found!");
    }

但请确保'onPress'处理程序中可以看到'sample_txt'。