int 型と uint 型
int (livedocs@lab) と uint (livedocs@lab) はそれぞれ 32 ビットの符号付/符号無し整数を表す型です。
表現できる範囲は int が -2,147,483,648 から 2,147,483,647、uint が 0 から 4,294,967,295 です。この範囲で足りない場合には Number を使うことになります。int/uint を使用したほうが Number よりも演算速度は速いため int/uint で用が足りる場合はこちらを選ぶのがよさそうです。
さて、int/uint それぞれの最大値と最小値は以下のように定義されています。
int.MAX_VALUE // int の最大値 int.MIN_VALUE // int の最小値 uint.MAX_VALUE // uint の最大値 uint.MIN_VALUE // uint の最小値
この記述の仕方からも推測できるように int/uint ともに小文字で始まっていますがクラスです。そのため以下のような記述も可能です。
var myInt:int = 1234; trace(myInt.toString()); // 1234 が出力される // さすがに以下の記述はむり // trace(1234.toString()); コンパイルエラー
toString() メソッドには引数に文字列変換する際の基数を指定することもできます。基数の範囲は 2 から 32 です。
var myUint:uint = 9; trace(myUint.toString(2)); // 1001 が出力される trace(myUint.toString(8)); // 11 が出力される
コンストラクタを使用てオブジェクトを生成したり、オブジェクトからプリミティブ値(ちょっと定義が変ですが)を取り出したりすることもできます。
var num:int = new int(2); trace(num.valueOf()); // 2 が出力される
RGBA 値(RGB とアルファ値)を指定する場合には uint を使う必要があります。AS2 に慣れた方はご注意を。
int() 関数 / uint() 関数
int() (livedocs@lab) と uint() (livedocs@lab) はプリミティブ型(Boolean、null、Number、String、undefined)の値を符号付または符号無しの整数に変換するグローバル関数です。
trace(int(1.2)); // 1 が出力される trace(int(true)); // 1 が出力される trace(int(false)); // 0 が出力される trace(int("")); // 0 が出力される trace(int(" 2")); // 2 が出力される trace(int("2a")); // 0 が出力される
数字以外の文字を含む文字列は 0 になります。
parseInt() 関数
上記の int() を使っても文字列を int に変換できましたが、parseInt() 関数 (livedocs@lab) を使うと変換時の基数を指定することができます。基数は省略可能です。
trace(parseInt("100")); // 100 が出力される trace(parseInt("100", 16)); // 256 が出力される trace(parseInt("100X", 16)); // 256 が出力される
parseInt() は引数の文字列が数字で始まっていれば、変換できるところまで変換した値を返します。
0x で始まる数値は16進数として扱われます。AS2 と違い 0 で始まる数値は8進数として扱われません。
trace(parseInt("0x100")); // 256 が出力される trace(parseInt("0100")); // 100 が出力される
parseFloat() 関数
浮動小数点数が必要な場合は parseFloat() 関数 (livedocs@lab) を使用します。
trace(parseFloat("100.1")); // 100.1 が出力される
こちらは基数を指定したり 0x で始まる文字列を使うことはできません。
コメントする