- 2008年5月23日 18:00
- AS3
インスタンスメンバーはインスタンス化(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」「変数」「置き場所」「設置場所」「階層」とかのキーワードで引っかかるようになれば初心者に役立つと思います。
Comments:0
Trackbacks:0
- TrackBack URL for this entry
- http://ryow.net/mt/mt-tb.cgi/331
- Listed below are links to weblogs that reference
- インスタンスメンバーとクラスメンバー from ryow.net Blog