我做错了什么?
代码:
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!
我需要做的是检查输入文本字段中的文本是否等于其中一个数组值,并且运行特定函数取决于结果。
此致
阿图尔。
答案 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'。