Ошибка 1010 в ActionScript - PullRequest
       0

Ошибка 1010 в ActionScript

0 голосов
/ 02 августа 2011

После компиляции и запуска моей программы я сталкиваюсь с ошибкой времени выполнения 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);
}
}

В чем проблема?Я использую функцию updateScore для слушателя MouseEvent, как вы можете видеть.

Ответы [ 6 ]

3 голосов
/ 02 августа 2011

Пожалуйста, поместите {и} в ваш цикл 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 голос
/ 02 августа 2011

@ Ответ Дженса есть, но его объяснение сбивает с толку.

Когда ваш цикл завершается,

i = balls.length

На следующей строке вы ссылаетесь

balls[i].isCorrect.

В этой конкретной строке i на 1 больше, чем самый большой индекс в шарах.Следовательно, исключение.

Хотя вы, возможно, не хотите, чтобы каждая из этих строк выполнялась для каждого повторения цикла, как думал Дженс, вы должны решить эту проблему.

1 голос
/ 02 августа 2011

Ошибка означает, что вы пытаетесь манипулировать свойствами неопределенной переменной.Вы, вероятно, пытаетесь получить доступ к balls[i], когда на i-й позиции нет элемента.Или, возможно, есть другой объект без свойства, к которому вы хотите получить доступ.

В какой строке вы получаете сообщение об ошибке.Вы уверены, что balls[i].isCorrect является действительным свойством.

0 голосов
/ 02 августа 2011

на основе предоставленного вами небольшого кода вы либо не создали экземпляр вектора 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.

0 голосов
/ 02 августа 2011

попробуйте добавить

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

до объявления цикла

0 голосов
/ 02 августа 2011

Вы пропустили первое правило в цикле for:

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

Я думаю, вы имели в виду

for(i;i<balls.length;i++)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...