Flash 学習 ソフト アニメーション ActionScript
Top | Back | Next
変数の有効範囲(スコープ)
 スコープとは 作成した変数は SWF ファイル内のどこまで使用、参照可能なのか?などを決める有効範囲というものがあります。これらを理解していきましょう。 変数は全てのデータ 型を格納できる便利な箱、容器です。 まずは変数のスコープの種類を覚えて、次回宣言方法を覚えましょう。
スコープの違う変数
まず変数の有効範囲(この変数はどこからどこまで有効なの? )理解する為には下記の三種類の変数を理解する必要があります。
  • タイムライン変数
  • グローバル変数
  • ローカル変数
タイムライン変数

タイムラインのスクリプトで利用することができる変数です。

例)
タイムラインの10フレームで巨峰は紫という変数を宣言します。
var kyoho = murasaki
そうすると10フレーム以降のスクリプトで変数へアクセスする事ができます。もちろん10フレームよりも前のフレームではkyohoへはアクセスできません。

 例えば10フレーム目にvar x=10; を宣言して1フレーム目でtrace(x);を使って出力してみても xundefined(未定義値)となります。どうしてかというと1〜9フレーム目までは変数xを宣言していないからです。だけども一旦メインタイムラインの最後へ行ってループ再生等でメインタイムラインの最初へ戻ってくるとxは10になっています。

豆知識:FLASH MXではundefinedが表示され、FLASH 5だと何も表示されません。
undefined(アンデファインド)変数に値がまだ割り当てられていないことを示すために使用される特別なリテラル(値)

グローバル変数

 ドキュメント内のどのタイムラインやスコープでも参照できる変数の事です。

ローカル変数
 その変数が宣言された関数の本体 (中カッコで囲まれた範囲内) だけで使用できます。つまり{ }の中でだけ有効となります。
ここではfunctionfor文 などを使用して説明しています。両方知らなくても理解できます。functionについてわからない場合、知りたい場合は関数のページを見てください。
myBtn_btn.onRelease = function() {
for (i=1; 5>i; i++) {
var food = "カルビとハラミ"+i+"人前";
trace(food);
}
};
trace(food);

上記のスクリプトを見てください。myBtn_btnというボタンを押したら、繰り返し(ループ)処理を行うfor文行います。最初に出てくるtrace(food);の出力結果と2番目に出てくるtrace(food);では結果が異なります。つまりfunctionの後の※ブロック内でvar foodと変数宣言をすると そのブロック内では有効になります。出力パネルに下記の様に表示されます。実際にボタンを作成してそのボタンのインスタンス名にmyBtn_btnと設定して、上記のスクリプトを書き込んで結果を見てみるとわかりやすいと思います。

undefined
カルビとハラミ1人前
カルビとハラミ2人前
カルビとハラミ3人前
カルビとハラミ4人前

1番目の trace(food);ではカルビとハラミが1から4まで出力されます。
2番目の trace(food);では未定義値の※undefinedと出力されます。

undefined(アンデファインド)変数に値がまだ割り当てられていないことを示すために使用される特別なリテラル(値)
※ブロックとは{ } の事です。

トップへ
Top | Back | Next