ActionScript 2.0でクラスに静的(static)プロパティとして配列を設定した場合、クラスのメソッドで配列エレメントを取出せないという問題が発見されました。
ActionScript 2.0のクラス定義ファイルTest.asの内容は、つぎのとおりです。
// ActionScript 2.0クラス定義ファイル: Test.as
class Test {
static var _array:Array = [0, 1, 2];
static function showAll() {
for (var i = 0; i<Test._array.length; ++i) {
trace("Element #"+i+" of Test._array(["+Test._array
+"]) is "+Test._array[i]+"?!");
}
}
}
Flashムービー(SWF)からクラスTestの静的(static)メソッドshowAll()は、以下のステートメントで呼出せます。
// Flashムービー(SWF): フレームアクション
Test.showAll();
すると、[出力]パネルには、つぎのような結果が表示されます。静的(static)プロパティの配列Test._array自体は正しく参照されているにも拘らず、エレメントの取出しに失しています。
Element #0 of Test._array([0,1,2]) is undefined?!
Element #1 of Test._array([0,1,2]) is undefined?!
Element #2 of Test._array([0,1,2]) is undefined?!
頭悪いんじゃない? ActionScript 2.0。なお、メソッドTest.showAll()の中のクラス参照をつけたTest._arrayという記述を、単なる_arrayに変更すれば、エレメントは正しく取得できます。
この記事へのコメント
●1.won(2004年05月26日 12:08)
(Test)._array[i]
カッコでくくるといけました。ますますワケわかんないすね。