ActionScript中的错误1010

时间:2011-08-02 09:55:39

标签: flash actionscript-3 oop

编译并运行我的程序后,我遇到运行时错误1010:

TypeError: Error #1010: A term is undefined and has no properties.
at DC/updateScore()[DC::frame74:36]

这是一段代码:

function updateScore(e:MouseEvent) {
var i:uint=0;
for(;i<balls.length;i++)
    if(balls[i]==e.target)
        break;
if(balls[i].isCorrect) {
    score++;
    timeField.text = new String(score);
}
else {
    score--;
    timeField.text = new String(score);
}
}

有什么问题?正如您所见,我正在为MouseEvent侦听器使用updateScore函数。

6 个答案:

答案 0 :(得分:3)

请把{和}放到你的for循环中!

function updateScore(e:MouseEvent) {
    var i:uint=0;
    for(;i<balls.length;i++) {
            if(balls[i]==e.target)
                break;
        if(balls[i].isCorrect) {
            score++;
            timeField.text = new String(score);
        }
        else {
            score--;
            timeField.text = new String(score);
        }
    }
}

允许不使用{和}循环,但只有第一个语句才会被执行。

答案 1 :(得分:1)

错误意味着您正在尝试操作未定义变量的属性。当第i个位置没有元素时,您可能正在尝试访问balls[i]。或者可能还有另一个没有您要访问的属性的对象。

你在哪一行得到错误。您确定balls[i].isCorrect是有效的属性。

答案 2 :(得分:1)

@Jens回答了,但他的解释令人困惑。

当你的循环退出时,

i = balls.length

在下一行,您正在引用

balls[i].isCorrect.

在该特定线上,我比球中的最大指数大1。因此,例外。

虽然您可能不希望每个重复的循环执行这些行,就像Jens想的那样,你必须解决这个问题。

答案 3 :(得分:0)

你错过了for循环中的第一条规则:

for(;i<balls.length;i++)

我认为你的意思是

for(i;i<balls.length;i++)

答案 4 :(得分:0)

尝试添加

if(!balls){
   trace('balls missing');
   return;
}

在循环声明之前

答案 5 :(得分:0)

根据您提供的小代码,您未实例化balls向量或timeFiled textField。

var balls:Vector<Ball>;
balls.push(new Ball(whatever), new Ball(whatever), new Ball(whatever));
trace(balls);

//ERROR
//you must initialize the vector:  var vector:Vector<Ball> = new <Ball>;

代码的哪一部分在第36行?

问题也可能出在Ball对象的isCorrect属性。