ActionScript 3.0入門ノート CS4でタグ「var」が付けられているもの

(section01-03 フレームアクションのメソッド定義と関数定義から抜粋)

 同一のタイムライン内では同名の変数は1個しか宣言することが許されません。つまり、たとえ異なるキーフレームのフレームアクションでも変数名が同じならばそれは同じ変数であり同じ値が入っています。これをグローバル変数と呼びます。
 ところが、メソッドや関数を定義するfunctionブロックの内側で変数を宣言したとき、その変数は個別のfunctionブロックの中だけで利用できる変数になります。これをローカル変数と呼びます。
 functionブロックの中と外で同名の変数が定義してあるとき、functionブロックの外の変数はグローバル変数になり、functionの中で宣言した変数はローカル変数になります。もちろん名前の重複エラーになることもありません。
 次の例では変数aをfunctionの外で宣言しています。この場合、test1()、test2()のfunction内も含めて同一タイムラインにおいて変数aは共通のグローバル変数になります。

note
ムービークリップのタイムラインで定義してあるグローバル変数の値は、ムービークリップのインスタンスごとに保存されます。

[:script:]functionブロックの外で宣言するグローバル変数a
//変数aの宣言
var a:int=100;

function test1():void{
	//変数aに1加算する
	a += 1;
	trace(a);
}

function test2():void{
	//変数aを2倍する
	a *= 2;
	trace(a);
}

//テスト
test1(); //出力:101
test2(); //出力:202
trace(a); //出力:202
 一方、次の例では変数aをfunctionブロックの外だけでなく、test1()のfunctionブロックの中でも宣言して使っています。このとき、続くテストの結果を見るとわかるように、test2()で参照している変数aはブロックの外で宣言している変数aと同じ変数ですが、test1()の中で宣言してある変数aは名前が同じでもtest1()の中だけの変数、すなわちローカル変数であることがわかります。

[:script:]test1()ではローカル変数aを宣言して使う
//変数aの宣言
var a:int=100;

function test1():void{
	//ローカル変数aの宣言
	var a:int=5;
	//ローカル変数aに1加算する
	a += 1;
	trace(a);
}

function test2():void{
	//変数aを2倍する
	a *= 2;
	trace(a);
}

//テスト
test1(); //出力:6
test2(); //出力:200
trace(a); //出力:200
(section01-02 変数と定数から抜粋)

 変数はvarで宣言します。変数名には英数半角文字と半角記号を使うことを推奨されています。ただし、変数名を数字で始めることはできません。また、ActionScriptのキーワードを変数名に使ったり、演算子を名前の中に含めることもできません。
 varで変数を宣言する際に同時にデータ型を指定できます。データ型は値の属性や範囲を定義します。たとえば、変数をuint型に指定するとその変数には0または正の整数のみが入ります。データ型を指定することでデータの初期値が決まり、コンパイル時や実行時に型チェックが行われエラーを検出できます。
 次の例ではage、address、colorstの3つの変数を宣言しています。それぞれのデータ型はuint、String、Arrayです。uintは0または正の整数、Stringはストリング(文字列)、Arrayは配列を示すデータ型です。

[:script:]変数の宣言
var age:uint;
var address:String;
var colors:Array;
 変数を宣言すると同時に初期値を設定することもできます。

[:Script:]変数の宣言と初期値の設定を行う
var age:uint = 24;
var address_home:String = "茅ヶ崎市";
var colors:Array = new Array();
 次のように式を使った初期値の設定も可能です。

[:Script:]初期値の宣言で式を使う
var a:int = 1;
var b:int = 2+5;
var c:int = a*b;
 変数名をカンマで区切ることで複数の変数を同時に宣言することもできます。

[:Script:]1行で複数の変数を宣言する
var a:int = 1, b:int = 2, c:int = a+b;
trace(a, b, c);
//出力:1 2 3
 このとき、左の変数から先に宣言されていく点に注意が必要です。次の例のように変数aを宣言すると、変数b、cには未だ値が代入されおらずどちらも初期値の0のままなので、変数aの値は0になります。

[:Script:]変数aを宣言したときには、変数b、cには値が入っていない。
var a:int = b+c, b:int = 1, c:int = 2;
trace(a,b,c);
//出力:0 1 2

データ型を指定しない *
 変数にどんなデータ型の値が入るか特定できないときなど、データ型を指定せずに変数を宣言することもできます。この場合には明示的に*を型注釈として使うことができます。また、undefinedを代入したい変数のデータ型も*で宣言します。データ型を指定した変数にundefinedを代入するとnullと置き換えられます。

[:string:]データ型指定なしで変数を宣言する
var tmp;
var loadData:*;
var ghost:* = undefined;
まったく新しいAS3の世界!
694a.jpg
Adobe Flash CS4
詳細!ActionScript3.0入門ノート[完全改訂版](CD-ROM付)

楽しいActionScript。
新たなる1歩へと踏み出しましょう。
■内容は?→ 目次を見る
■評判は?→ 書評を読む
この本を書いたわけ

タグ

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

あわせて読みたいブログパーツ