« 2.1 スクリプトの記述 | メイン | 2.3 フレームアクションの関数定義とメソッド定義 »

2.2 変数と定数

■変数の宣言
変数はvarで宣言します。変数名には英数半角文字と半角記号を使うことを推奨されています。ただし、変数名を数字で始めることはできません。また、ActionScriptのキーワードを変数名に使ったり、演算子を名前の中に含めることもできません。
varで変数を宣言する際に同時にデータ型を指定できます。データ型の指定は必須ではありませんが、データ型を指定することでコンパイル時に型チェックが行われエラーを検出できます。また、変数名に続けてドットをタイプしたときに適切なコードヒントが表示されるようになります。データ型を指定することで内部処理も速くなります。

例:
var age:int;
var address;
var colors;

変数を宣言すると同時に初期値を設定することもできます。ActionScript3.0からは式を使った初期値の設定も可能です。

例:
var age:int = 24;
var address_home:String = "茅ヶ崎市";
var colors:Array = new Array();
var a:int = 1;
var b:int = 2;
var c:int = a+b;

変数名をカンマで区切ることで複数の変数を同時に宣言することもできます。このとき、左の変数から先に宣言されていきます。

例:
var a:int = 1, b:int = 2, c:int = a+b;
trace(a,b,c);
//出力:1 2 3

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


■定数の宣言
定数はconstで宣言します。定数名も変数名と同様に英数半角と記号を使った名前にします。ActionScriptでは大文字だけを使い、単語は_で区切るという表記規則が使われています。定数の値は宣言時に1度しか設定できず、定数の値を後から代入しようとするとエラーになります。

例:
const PER:Number = 0.3;
const VER_NO:String = "fl9";

次の例は定数の値を後から変更しようとした場合です。これはエラーになります。

例:
const PER:Number = 0.3;
PER = 0.5;// ここでエラーになる。

例:
const VER_NO:String;
VER_NO = "fl9";// ここでエラーになる。

なお、オブジェクトを定数として宣言した場合は、そのオブジェクトに対する操作は可能なので注意が必要です。たとえば、配列PEN_COLORSを定数にした場合にpush()メソッドで値を追加することができます。

例:
const PEN_COLORS:Array = new Array("green", "red");
PEN_COLORS.push("white");
trace(PEN_COLORS);
//出力:green,red,white

ただし、この場合もPEN_COLORSの値を別の値で上書きすることはできません。
const PEN_COLORS:Array = new Array("green", "red");
PEN_COLORS = new Array("pink", "blue");// エラーになる

■グローバル定数
次の値は、どこからでも利用できるグローバル定数です。

定数    データ型   意味
Infinity		Number		正の無限大
-Infinity		Number		負の無限大
NaN			Number		非数(数値ではない)
undefined	*(指定なし)	未定義

次のキーワードは厳密には定数ではありませんが、定数と同じような使い方ができます。

キーワード    データ型   意味
true				Boolean		真(1、"true")
false			Boolean		偽(0、"false")
null				Object		データがないことを示す

■クラスの静的パブリック定数
標準クラスで定義してある定数もたくさんあります。これらは「クラス名.」を付けて使います。たとえば、Mathクラスには数値演算でよく利用する値が静的なパブリック定数として定義してあります。円周率ならばMath.PIのように参照します。

定数   	 データ型  意味					近似値
Math.E			Number		自然対数の底e		2.71828182845905
Math.LN10		Number		10の自然対数			2.302585092994046
Math.LN2		Number		2の自然対数			0.6931471805599453
Math.LOG10E		Number		10を定数とするeの対数	0.4342944819032518
Math.LOG2E		Number		2を定数とするeの対数	1.442695040888963387
Math.PI			Number		円周率				3.141592653589793
Math.SQRT1_2	Number		1/2の平方根			0.7071067811865476
Math.SQRT2		Number		2の平方根			1.4142135623730951

Numberクラスには最大値、最小値などの定数があります。最大数値ならばNumber.MAX_VALUEのように参照します。

定数    					データ型  意味
Number.MAX_VALUE				Number 	扱える最大数値
Number.MIN_VALUE				Number 	0以外の正の値で、扱える最小数値
Number.NaN						Number 	非数(数値ではない)
Number.NEGATIVE_INFINITY		Number 	負の無限大
Number.POSITIVE_INFINITY		Number		正の無限大

Keyboardクラスにはキーコードを示す定数があります。BackspaceキーならばKeyboard.BACKSPACEのように参照します。

定数    					データ型  意味
Keyboard.BACKSPACE			uint	Backspaceキーのキーコード値 (8)
Keyboard.CAPS_LOCK			uint	CapsLockキーのキーコード値 (20)
Keyboard.CONTROL				uint	Controlキーのキーコード値 (17)
Keyboard.DELETE				uint	Deleteキーのキーコード値 (46)
Keyboard.DOWN					uint	下矢印キーのキーコード値 (40)
Keyboard.END 					uint	Endキーのキーコード値 (35)
Keyboard.ENTER				uint	Enterキーのキーコード値 (13)
Keyboard.ESCAPE				uint	Escキーのキーコード値 (27)
Keyboard.F1					uint	F1キーのキーコード値 (112)
Keyboard.F10					uint	F10キーのキーコード値 (121)
Keyboard.F11					uint	F11キーのキーコード値 (122)
Keyboard.F12					uint	F12キーのキーコード値 (123)
Keyboard.F13					uint	F13キーのキーコード値 (124)
Keyboard.F14					uint	F14キーのキーコード値 (125)
Keyboard.F15					uint	F15キーのキーコード値 (126)
Keyboard.F2					uint	F2キーのキーコード値 (113)
Keyboard.F3					uint	F3キーのキーコード値 (114)
Keyboard.F4					uint	F4キーのキーコード値 (115)
Keyboard.F5					uint	F5キーのキーコード値 (116)
Keyboard.F6					uint	F6キーのキーコード値 (117)
Keyboard.F7					uint	F7キーのキーコード値 (118)
Keyboard.F8					uint	F8キーのキーコード値 (119)
Keyboard.F9					uint	F9キーのキーコード値 (120)
Keyboard.HOME					uint	Homeキーのキーコード値 (36)
Keyboard.INSERT				uint	Insキーのキーコード値 (45)
Keyboard.LEFT					uint	左矢印キーのキーコード値 (37)
Keyboard.NUMPAD_0				uint	テンキーの 0キーのキーコード値 (96)
Keyboard.NUMPAD_1				uint	テンキーの 1キーのキーコード値 (97)
Keyboard.NUMPAD_2				uint	テンキーの 2キーのキーコード値 (98)
Keyboard.NUMPAD_3				uint	テンキーの 3キーのキーコード値 (99)
Keyboard.NUMPAD_4				uint	テンキーの 4キーのキーコード値 (100)
Keyboard.NUMPAD_5				uint	テンキーの 5キーのキーコード値 (101)
Keyboard.NUMPAD_6				uint	テンキーの 6キーのキーコード値 (102)
Keyboard.NUMPAD_7				uint	テンキーの 7キーのキーコード値 (103)
Keyboard.NUMPAD_8				uint	テンキーの 8キーのキーコード値 (104)
Keyboard.NUMPAD_9				uint	テンキーの 9キーのキーコード値 (105)
Keyboard.NUMPAD_ADD			uint	テンキーの加算キーのキーコード値 (107)
Keyboard.NUMPAD_DECIMAL		uint	テンキーの小数点キーのキーコード値 (110)
Keyboard.NUMPAD_DIVIDE			uint	テンキーの除算キーのキーコード値 (111)
Keyboard.NUMPAD_ENTER			uint	テンキーの Enterキーのキーコード値 (108)
Keyboard.NUMPAD_MULTIPLY		uint	テンキーの乗算キーのキーコード値 (106)
Keyboard.NUMPAD_SUBTRACT		uint	テンキーの減算キーのキーコード値 (109)
Keyboard.PAGE_DOWN			uint	PageDownキーのキーコード値 (34)
Keyboard.PAGE_UP				uint	PageUpキーのキーコード値 (33)
Keyboard.RIGHT				uint	右矢印キーのキーコード値 (39)
Keyboard.SHIFT				uint	Shiftキーのキーコード値 (16)
Keyboard.SPACE				uint	スペースバーのキーコード値 (32)
Keyboard.TAB					uint	Tabキーのキーコード値 (9)
Keyboard.UP					uint 	上矢印キーのキーコード値 (38)

■エスケープシーケンスと¥記号
改行コードやタブコードなど、通常では表記できない文字列は\(バックスラッシュ)を使ったエスケープシーケンスを使って記述できます。ただし、Windowsでは\は¥記号で表示されます。Windowsにおいても、実際には\(バックスラッシュ、Unicode 005C)が入っています。アクションウインドウを英語フォント表記に変更すると\が入力されているのを確認できます。

エスケープ文字		本来の値
\b					バックスペース
\f					改ページ
\n					改行(LF)
\r					改行(CR)
\t					タブ
\unnnn				Unicodeのnnnn
\xnn				ASCIIコードのnn
\'					'
\"					"
\\					\


たとえば、「色は"赤"です。」という文があるとき、ストリング内の"は\"と書くことで記述できます。

[:sample:] escapeSequence-1.fla
例:ストリング内の色を""で囲む
var msg:String = "色は\"赤\"です。"
trace(msg);
//出力:色は"赤"です。

色を変数で指定するならば、次のようなスクリプトになります。

[:sample:]escapeSequence-2.fla

例:変数で指定した色を""で囲む
var color:String = "赤";
var msg:String = "色は\""+ color +"\"です。"
trace(msg);
//出力:色は"赤"です。

ところで、Windowsでは\が¥で表示されることから、¥1950というように円記号を表示したい場合にはそのまま\を¥として使うことが多くあります。実際、キーボードの¥キーをタイプしても\と同じコードが入力されます。しかし、円記号のつもりで\を使うとエスケープシーケンスと解釈されて不都合が出ることがあります。そこで円記号の¥を使う場合には、Unicodeの¥(00A5)を使います。
次のスクリプトはUnicodeを扱うためのエスケープシーケンスを使って円記号を入力した例です。

[:note:]
Mac OSXでは、optionキー+yでUnicodeの¥(00A5)を入力できます。

[:sample:] escapeSequence-3.fla

例:Unicodeの¥記号(00A5)をエスケープシーケンスを利用して入力する。
var yen:String = "\u00A5";
var price:int = 1950;
trace(yen+price);
//出力:¥1950

StringクラスのfromCharCode()を使ってUnicodeを該当文字に変換することもできます。

[:sample:] escapeSequence-4.fla

例:Unicodeの¥記号(00A5)をコード変換を使って入力する。
var yen:String = String.fromCharCode(0x00A5);
var price:int = 1950;
trace(yen+price);
//出力:¥1950

About

2007年5月 5日 20:42に投稿されたエントリーのページです。

ひとつ前の投稿は「2.1 スクリプトの記述」です。

次の投稿は「2.3 フレームアクションの関数定義とメソッド定義」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。