書き物

技術とか作った物の話とか愚痴文句感想など

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()"より早く実行されるようです。


なかなか便利だなぁ。


というレポートでした。