インスタンスメンバーとクラスメンバー

インスタンスメンバーはインスタンス化(new SampleClass();)したクラス内の変数。
クラスメンバーは直接クラスを呼んだときの変数(SampleClass.testNum)。

当たり前のことは当たり前なんですが、AS2からAS3に移行するとき、どこにも書いてないんだけどメッチャ大事なのが変数のスコープ問題です。

AS2では _root.testNum でアクセスできたものは、入れ子になったmcからも同じようにアクセスできました。

AS3では rootに変数を置くことはナンセンスとされているので、変数の置き場所に困ります。たとえば沢山の入れ子になったmcがいくつもあって、そのどれもが _root に置いた変数 testNum を参照したいとき、それぞれのmcのタイムラインにいちいち _root.testNum と書くのではないということです。

ここでクラスメンバーの登場というわけですね。

どんな深い入れ子になったmcからも、すべて一律に SampleClass.testNum でアクセスできれば、階層を意識する必要はありません。

そのためにはどうするか。

package{
public class SampleClass{
public static var testNum:int;
}
}

これですべてのmcなどから簡単にアクセスできます。タイムラインだけじゃなく、他のクラスからも同じ。
インスタンスメンバーとどう違うのかというと、インスタンス化してしまうとそのインスタンスごとに testNum という変数が設定され、値を共有できなくなってしまうということですね。
「AS3」「変数」「置き場所」「設置場所」「階層」とかのキーワードで引っかかるようになれば初心者に役立つと思います。

この記事には、カテゴリ AS3 タグは , がつけられています。