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 変数は常に Number として存在し、Number として型キャストされます。なぜ上記のコードが失敗するのでしょうか?
このように変更すると機能しますが、それは醜く、なぜこれが必要なのですか? AAARGGGGHHHH...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