ActionScript 3.0でAS2のような_global変数を使う方法

ちょっとした子ネタの紹介。ActionScript 1.0/2.0の頃にFlashのどこからでも参照できる「_root」や「_global」という変数がありました。それをActionScript 3.0でも使う方法です。

手順1.ファイルを用意

flaからパスの通った階層(とりあえずflaファイルと同じ階層でOK)に「_global.as」というASファイルを作成します。

手順2. スクリプトを記述

ASファイル「_global.as」に次の三行を記述します。

package {
    public const _global:Object = {};
}

はい、以上です。

試しにスクリプトを記述

フレームアクションでもクラスでもどちらでもいいので、次のスクリプトを記述してみましょう。

_global.my_num = 1000;
_global.my_str = "moja";

trace(_global.my_num);
trace(_global.my_str);

出力パネルに結果が表示されるはずです。

一応、説明

ActionScriptファイルはクラスファイルのみを記述できると思われがちですが、packageの括弧内(かつclassの括弧の外側)に記述することでこのように任意の変数やメソッドを定義することもできます。変数_globalはObject型として型指定したため、何でも挿入できます。

packageパスは特に記述しないことでデフォルトの名前空間になるため、どこからでもimport文を通さずに参照できるというわけです。

少しバッドノウハウの紹介でしたが、応急処置的にグローバル変数を利用したいときや、AS2からの移行を考えている方には役立つかもしれませんね。

ソースのダウンロード

ソースファイルはこちらからダウンロードできます。(Flash CS4形式)

投稿者 : 池田 泰延

BookMark

ブックマークはこちらからどうぞ。

このエントリーをはてなブックマークに追加

Comment/Trackback 10件