MCからクラスの変数(メンバ?)を参照
例えば、以下のようなクラスを作ります。
class VarTest extends MovieClip { var i:Number = 0; function VarTest() { var scope:Object = this; this.onEnterFrame = function() { scope.i++; trace(scope.i); }; } }
MCシンボルを作って、"リンケージプロパティ"の"AS2.0クラス"の欄に、
"VarTest"と記述します。
このMCシンボルをステージに配置してプレビューすると、
1 2 3 . . .
と出力されます。
僕が今回したいことは、
この配置したMCから、クラスで定義された"i"を参照することです。
ものは試しということで、配置されたMCに以下のスクリプトを書きます。
onClipEvent (enterFrame) { trace("i = " + i); }
プレビューしてみると、(VarTestクラスの方のtraceは無視)
i = 0 i = 1 i = 2 . . .
と出力されました。
以上のことから、
「VarTestクラスで定義した(メソッド内ではない)変数は、
割り当てたMCに定義することと同じ。」
と推測できます。
・・・ということは逆も可能か?
ということで、試してみます。
同じMCに、
onClipEvent (load) { var j:Number = 0; } onClipEvent (enterFrame) { j++; }
と書きます。
そしてVarTestクラスの"onEnterFrame"を
this.onEnterFrame = function() { trace("j = " + scope.j); };
と修正してみます。
これでプレビューしてみると、
j = 1 j = 2 j = 3 . . .
と表示されました。
予想通りです!
これで処理が実行される順番も分かりました。
どうやら、MCに書かれた"onClipEvent(enterFrame)"の方が、
VarTestクラスの"this.onEnterFrame = function()"より早く実行されるようです。
なかなか便利だなぁ。
というレポートでした。