У меня странная проблема, связанная с ошибкой Flash 1151: существует конфликт с определением i во внутреннем пространстве имен.
Вот проблемный код:
for(var i:Number=dt.getFullYear(); i >= dt.getFullYear()-90; i--)
{
dtYear.addItem( {label:i, data:i} );
} //for
//-*-*-* Month
for(var i:Number=0; i < months.length; i++)
{
dtMonth.addItem( {label:i, data:i} );
} //for
Или более вопиющий пример:
for(var i:Number=0; i < 12; i++)
{
trace(i);
} //for
//-*-*-* Month
for(var i:Number=0; i < 12; i++)
{
} //for
Adobe дает объяснение:
You cannot declare more than one variable with the same identifier name within the same scope unless all such variables are declared to be of the same type. In ActionScript 3.0, different code blocks (such as those used in two for loops in the same function definition) are considered to be in the same scope.
Что за чертовщина? Я имею в виду, что переменная i все время существует как число, типизировано как число, почему, черт возьми, вышеприведенный код может не работать?
Если я изменю его таким образом, он сработает, НО ЭТО УРОГО И ПОЧЕМУ ЭТО НУЖНО? AAARGGGHHHH ... Разработка Flash сводит меня с ума. Дай мне пистолет :). Кто-нибудь, объясните мне это, пожалуйста.
Рабочий код:
for(var i:Number=dt.getFullYear(); i >= dt.getFullYear()-90; i--)
{
dtYear.addItem( {label:i, data:i} );
} //for
//-*-*-* Month
for(i=0; i < months.length; i++)
{
dtMonth.addItem( {label:i, data:i} );
} //for