変数

変数:Variable

  • 「変数」とは、何らかの値を代入して保存しておくもので、必要なときに自由に作ることができます
  • ダイナミックテキストフィールドにテキスト内容を表示するために、情報を保存しておく
  • ユーザーが入力したテキスト内容をサーバーに送信するために保存しておく



変数に代入する値を、ActionScriptでは「データ」と読んでいます

【例】

a = 1;
b = 2;
c = a + b;


Scriptは原則として「上から下」へ順に実行されていきます。
この場合は、次のような処理になります。

a という変数に 1を入れる
b という変数に 2を入れる
a の内容に b の内容を足したものを、c という変数に入れる


つまり、c には「3」が入っていることになります。

変数のルール

変数は「var」を使って宣言
var a = 1;


「a という変数を使うことを宣言し、初期値として1を入れます。」
var は、その変数が最初にScriptに登場するときに1回だけ使います。

変数名のつけ方

変数の名前
変数の名前は、先頭の1文字は、

  1. 英字
  2. アンダースコア
  3. ドル記号

のいずれかでなければなりません。


以下の語句は、予約語といい「変数名」には、使用できません。


break, case, continue, default, delete, else, for, function, if, in, instanceof, new, return, switch, this, typeof, var, void, while, with

これ以外は自由につけることができます。
2つ以上の単語を組み合わせる場合には、2番目以降の単語の頭文字は「大文字」にします。

変数のデータ型

データ型は、変数名に「: コロン」をつけてその後に続けて書きます。
常に使うのは、以下の2つのデータ型です。

  • 数値データ型(Number):数値を入れるための変数
  • ストリングデータ型(String):文字列を入れるための変数
var c:Number = 3;
var s:String = "答えは";
var answer:String = s + c;

trace( answer );


Scriptの働きを日本語にすると

c という数値型の変数を宣言して、3という数値を入れる
s というストリング型の変数を宣言して、「答えは」という文字列を入れる
answerというストリング型の変数を宣言して、s と c を繋げた結果を入れる

変数 answer の内容を出力パネルに表示する


データ型のコードヒント
コロンを入力すると、表示されます。

ブールデータ型

「true」か「false」のどちらかの値しか入らないデータ型。

var nameEntered:Boolean = false;


この例では、ブールデータ型の変数「nameEntered」を宣言しています。
「名前が入力されたかどうか」という情報を保管する変数として利用されます。

  1. 名前が入力されている → true
  2. 名前が入力されていない → false


このように「入力・未入力」「選択・未選択」「使用中・空き」「正解・不正解」のような2つしか選択肢がない情報を保管するときに利用すると便利です。

MovieClip(ムービークリップ)型
var fruit:MovieClip = apple;
fruit._alpha = 50;


この結果、インスタンスapple」のアルファー値(不透明度)を50%にします。
このような変数を、「appleへの参照(リファレンス)」といいます。

変数名を間違ったら
var c:Number = 3;

trace( answer );


この場合、変数「answer」の宣言すらされていません。
その場合は、以下のように表示されます。



値も何もないので「undefined(未定義)」と表示されました。

リテラル

変数に対して数値やストリングなどのスクリプトに直接書いた値を「リテラル」と呼びます。

変数の種類とスコープ(有効範囲)

変数には

  1. タイムライン変数
  2. ローカル変数
  3. グローバル変数

の3種類があります

  • 変数の種類の違いはスコープの違い、すなわち、変数の有効範囲の違いと言えます
タイムライン変数
  • フレームアクションに直接書いた変数は、そのタイムラインの中で有効な変数です
  • タイムライン変数の宣言には「varステートメント」を付けますが、これは省略も可能です


【例】フレームアクション:フレーム1

var a = 15;
var b = 32;
var x = a + b;

trace("x=" + x);  //出力→ x=47



フレームアクションは、フレームアクションが設定してあるキーフレームが再生されたときに実行されます。

  • まだ再生していないキーフレームのフレームアクションに書いてあるタイムライン変数にはアクセスできません。
  • そのキーフレームが1度でも再生されたならば、そこに書いてあるタイムライン変数にアクセスできるようになります。
  • タイムライン変数はインスタンスのプロパティという解釈もできます。
  • メインのタイムラインならば、_rootのプロパティという位置付けです。
ローカル変数
  • 「ローカル変数」は、関数やメソッドを定義するfunctionステートメントのブロック内で宣言し、その中でのみ有効な変数です。
  • functionブロックをいったん離れると変数は破棄され、変数の値は保持されません。たとえるなら、1度退場すると無効になる入場券のようなものです。
  • 「ローカル変数」はvarステートメントで宣言しなければなりません。
  • 関数やメソッドでは引数を受け渡す際にローカル変数が使われます。これをパラメータ変数と呼ぶことがあります。


例で使用している変数a、変数bがパラメータ変数です。
パラメータ変数はvar宣言が不要です。


【例】

//kakezan関数の定義
function kakezan(a, b) {
 var v = a * b;
 return v;
}
グローバル変数
  • グローバル変数は「_grobalオブジェクト」を利用して作る変数で、ムービーを通してどこからでもアクセスできる変数です。


【例】

var myColor = _global.colors[1]; // "green"
var usrName = _global.usrpref.name;
var usrAge = _global.usrpref["age"];
テキストフィールドを使った変数
  • テキストフィールドをダイナミックテキストまたはテキスト入力の設定にすると変数名を入力する項目が追加されます。ここに変数名を入れれば、テキストフィールドを変数のように使うことができます。
  • 変数の値はテキストフィールドに入って表示されます。
  • 値の取り出し方も同じで、テキストフィールドに表示されているデータを変数名で取り出せます。
  • 変数名を宣言する必要はありません。


たとえば、テキストフィールドにtheDataという変数名を付けたならば、次のように参照できます。


【例】

theData = "これはテキストフィールドのデータです。";
var msg = theData; //変数msgに入れる


テキストフィールドに値を入れたり取り出すというだけの目的ならば、テキストフィールドのtextプロパティを利用できます。


【例】

data_txt.text = "これはテキストフィールドのデータです。";
var msg = data_txt.text; //変数msgに入れる

変数に入るもの

  • 変数の中に入っている「データ」の種類
数値:Number
  • 値を示す数字
  • 得点や数そのもの
score _num = 120
shinchou _num = 170
taiju _num = 60
文字列:String
  • 名前などの文字
  • 学籍番号などの数字
name _str = "山本 太郎"
company _str = "Adobe"
日付:Date
  • 誕生日やイベントの日
  • 得点や数そのもの
birth _date = new Date(1970, 3, 3)
establish _date = new Date(2009, 5, 16)
データ型のチェック
  • 値のデータ型をチェックするにはtypeof演算子を使います
  • 返される値はデータによって次のようになります



ストリング → string
ムービークリップ → movieclip
ボタン → object
テキストフィールド → object
数値 → number
ブール値 → boolean
オブジェクト(インスタンス) → object
関数 → function
null → null
未定義 → undefined


【例】

trace(typeof "test"); //出力→ string
trace(typeof 123); //出力→ number
trace(typeof ([1, 2, 3, 4])); //出力→ object
usr = {name:"chan", age:21};
trace(typeof usr.name); //出力→ string
today = new Date();
trace(typeof today); //出力→ object


nullとundefinedも同様です。


【例】

trace(typeof null); // null
trace(typeof x); // 変数xをいきなり使用したのでundefined