Ошибка нулевой ссылки возникает при попытке доступа к свойствам переменной, которая не указывает ни на один объект - нулевая ссылка. Вы эффективно пытаетесь получить доступ к объекту, который не существует. Например, возможно, stepLine
не существует ни в одном из этих случаев, поэтому stepLine.alpha
вызывает ошибку. (Как установить альфа несуществующего клипа?) Возможно, клип steps[r]
находится на кадре, в котором еще нет stepLine
MovieClip.
Вы должны запустить фильм в режиме отладки, нажав Ctrl + Shift + Enter в Flash IDE. Это должно показать вам точную линию, которая вызывает ошибку, и это позволит вам проверить значения любых переменных в этой точке. Это должно помочь вам отследить проблему. Точно так же вы можете использовать операторы трассировки для помощи в отладке. Например, вы можете trace(steps[r].stepLine);
проверить наличие нулевых значений или даже просто if(!steps[r].stepLine) trace("ERROR");
. Кроме того, если вы заключите свои обращения в операторы if, вы сможете избежать ошибок нулевой ссылки, даже если это не решает основную проблему:
if(newStep != null){
for(var r:int = 0; r<steps.length;r++){
// only touch things if the movieclip actually exists
if(steps[r] && steps[r].stepLine){
if(steps[r].currentLabel == "points"){
steps[r].pointsDText.text = String(hPoints);
}
if(steps[r].currentLabel == "special"){
steps[r].stepLine.alpha = sStepAlpha;
}
if(steps[r].currentLabel == "life"){
steps[r].stepLine.alpha = hStepAlpha;
}
}
}
}