编译并运行我的程序后,我遇到运行时错误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函数。
答案 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
属性。