ActionScript 3.0のクラスでは2.0とは異なり、静的プロパティと同名のインスタンスプロパティを定義できることが明記されています。
以下のクラスStaticAndInstanceTest(スクリプト001)は、静的(static)プロパティとインスタンスプロパティに同名のtestを宣言しています。
スクリプト001■静的プロパティと同名のインスタンスプロパティを定義したクラス
// ActionScript 3.0クラス定義ファイル: StaticAndInstanceTest.as
package {
public class StaticAndInstanceTest {
public static var test:String;
public var test:String;
public function StaticAndInstanceTest(static_str:String, instance_str:String) {
StaticAndInstanceTest.test = static_str;
this.test = instance_str;
}
}
}
ActionScriptファイルと同じ場所に保存したflaファイルにつぎのフレームアクション(スクリプト002)を設定すると、静的プロパティtestとインスタンスプロパティtestにはそれぞれ別の値が設定されます。
スクリプト002■テスト用フレームアクション
// fla(swf)ファイル: テスト用
// タイムライン: _level0
// フレームアクション
var obj:StaticAndInstanceTest = new StaticAndInstanceTest("static", "instance");
trace(StaticAndInstanceTest.test); // 出力: static
trace(obj.test); // 出力: instance
静的プロパティとインスタンスプロパティとは、別個の名前空間(メモリ)に管理されるということでしょう。ただし、このようなクラスデザインがよい習慣(best practice)といえるかは、もちろん別論です。筆者の個人的見解としては、お薦めしません。