AS 3初心者ノートactioncript-の変数


変数
変数は、プログラムで使用する値を記憶するために使用できます.変数を宣言するには、var文と変数名を結合して使用する必要があります.アクションScript 2.0では、タイプコメントを使用する場合にのみ、var文を使用する必要があります.アクションScript 3.0では、いつもvar文を使用する必要があります.例えば、次のアクションScript行はiという変数を宣言します. 
 var i;
変数宣言時にvar文が省略されると、厳密なモードでコンパイラエラーが発生し、標準モードで実行中にエラーが発生します.例えば、変数iが以前に定義されていない場合、以下のコードの行にエラーが発生します.
 i; // error if i was not previously defined
変数を1つのデータタイプに関連付けるには、変数を宣言する際にこの操作が必要です.変数を宣言する時に変数のタイプを指定しないのは合法的ですが、これは厳格なモードにあります.
式でコンパイラ警告が発生します.変数名の後に、かかと変数タイプのコロン(:)を追加することで、変数タイプを指定できます.例えば、次のコードは一つ声明します. 
intタイプの変数i:
 var i:int;
は、変数の割り当てとして使用できます.例えば、次のコードは変数iを宣言し、値20を与えます.
 var i:int; 
 i = 20;
下記の例のように、変数を宣言しながら変数の割り当てに便利なことが分かります.
 var i:int = 20;
は、一般的に、変数を宣言しながら変数に値を割り当てる方法は、基本要素値(整数や文字列など)を付与する際によく使われるだけでなく、配列または実用化クラスの実装を作成する際にも使用される.
例の時もよく使います.次の例は、行コード宣言と値付けを使用した配列を示しています.
 var numArray:Array = ["zero", "one", "two"];
クラスのインスタンスを作成するために、new演算子を使用することができます.以下の例ではCustoomClassという名前のインスタンスを作成し、これをcustomItemという名前の変数に付与します.
実例の引用:
 var customItem:CustomClass = new CustomClass();
複数の変数を宣言する場合は、カンマ演算子(,)を使用して変数を分離し、これらのすべての変数を一行のコードに宣言します.例えば、下のコードは1行にあります.
コードに3つの変数を宣言します.
 var a:int, b:int, c:int;
同じ行のコードの中で各変数に値を割り当てることもできます.例えば、下記のコードは3つの変数(a、b、c)を宣言し、各変数に値を割り当てます.
 var a:int = 10, b:int = 20, c:int = 30;
コンマ演算子を使用して、各変数の宣言をステートメントに結合することができますが、コードの読み取り可能性が低下します.
変数のスコープを知る
変数の範囲とは、語彙参照によって変数にアクセスできるコード範囲です.グローバル変数とは、コードのすべての領域で定義される変数のことで、ローカル変数とは、コードの一部だけで定義される変数のことです.アクションScript 3.0では、常に変数のためにそれらの関数またはクラスの役割領域を宣言します.大域変数は、関数またはクラス定義の外部で定義された変数です.例えば、次のコードは、どの関数の外部にもstraGlobalというグローバル変数を宣言することによって作成されます.この例から、大域変数は関数定義の内部および外部で利用可能であることが分かる. 
 var strGlobal:String = "Global"; 
 function scopeTest() 
 { 
 
trace(strGlobal); // Global 
 } 
 scopeTest(); 
 trace(strGlobal); // Global
関数に内部宣言変数を定義することで、局所変数として宣言することができます.局所変数を定義できる最小コード領域は関数定義です.関数内部で宣言された
ローカル変数はこの関数にのみ存在します.例えば、local Scope()という名前の関数にstr 2という変数が宣言されている場合、この変数はこの関数の外部では不可能になります.
使います
 function localScope() 
 { 
 
var strLocal:String = "local"; 
 } 
 localScope(); 
 trace(strLocal); // error because strLocal is not defined globally
において、局所変数に関する変数名が大域変数として宣言されている場合、局所変数が作用領域内にある場合、局所定義は大域的な定義を隠す(または遮蔽する).
大域変数はこの関数の外部にも存在します.例えば、下のコードはstr 1という大域文字列変数を作成して、scopeTest()関数の内部で一つを作成します.
同じ名前のローカル変数があります.この関数のtrace文は変数のローカル値を出力し、関数外のtrace文は変数のグローバル値を出力します.
 var str1:String = "Global"; 
 function scopeTest () 
 { 
 
var str1:String = "Local"; 
 
trace(str1); // Local 
 } 
 scopeTest(); 
 trace(str1); // Global
C+++およびJavaの変数とは異なり、アクションスコープ変数はブロックレベルの作用領域がない.コードブロックとは、左大かっこ({)と右大かっこ(})のいずれかを指します.
ステートメントのセット.コードブロック内で宣言された変数は、C++およびJavaのようないくつかのプログラミング言語ではコードブロックの外部では利用できません.作用域に対するこの制限は
ブロックレベルのスコープにはこのような制限がありません.コードブロックに変数を宣言すると、この変数はコードブロックだけではなく、
使用します.また、コードブロックに属する関数の他の任意の部分でも使用できます.例えば、以下の関数は、異なるブロックスコープで定義される変数を含む.すべての変数
すべての関数で使用できます. 
 function blockTest (testArray:Array) 
 { 
 
var numElements:int = testArray.length; 
 
if (numElements > 0) 
 
{ 
 
var elemStr:String = "Element #"; 
 
for (var i:int = 0; i < numElements; i++) 
 
{ 
 
var valueStr:String = i + ": " + testArray[i]; 
 
trace(elemStr + valueStr); 
 
} 
 
trace(elemStr, valueStr, i); // all still defined 
 
} 
 
trace(elemStr, valueStr, i); // all defined if numElements > 0 
 } 
  
 blockTest(["Earth", "Moon", "Sun"]);
面白いことに、ブロックレベルのスコープが足りない場合、関数が終了する前に変数を宣言すれば、変数を宣言する前に読み書きます.これはあるからです
アップグレードという方法は、コンパイラがすべての変数宣言を関数の上部に移動することを表しています.例えば、下記のコードはコンパイルされます.たとえnumが先にあっても. 
変数の初期trace()関数の後にnum変数を宣言するのも同じです.
 trace(num); // NaN 
 var num:Number = 10; 
 trace(num); // 10
しかし、コンパイラは任意の割当文を向上させません.これはなぜnumの初期trace()がNaNを生成するのかを説明します.NaNは 
Numberデータ型変数のデフォルト値です.これは、下記の例のように変数の前に値を割り当てることもできることを意味します.
 num = 5; 
 trace(num); // 5 
 var num:Number = 10; 
 trace(num); // 10
デフォルト値は、変数の値を設定する前の変数に含まれる値です.変数の最初の値は、実際には初期化変数です.変数を宣言した場合、設定されていません.
値を置くと、その変数は初期化されていません.初期化されていない変数の値は、データの種類に依存します.下記の表に変数のデフォルト値を説明し、データクラスで
型はこれらの値を組織します.
データの種類
標準値
ボロア
false
要点
0
Number
NaN
Object
null
String
null
uint
0
未宣言(タイプコメント*と等価)
undefined
他のすべてのクラス(ユーザ定義クラスを含む).
null
Numberタイプの変数については、デフォルト値はNaNであり、NaNはIEEE-7054標準で定義されている特殊な値であり、数字ではないことを表しています.
ある値 
変数を宣言していますが、データの種類が宣言されていない場合は、デフォルトのデータ型*が適用されます.これは実際には無型の変数です.あなたがまだいないなら
有用な値は無型変数を初期化すると、その変数のデフォルト値はundefinedです.
Boolean、Number、int、およびuint以外のデータタイプについては、初期化されていない変数のデフォルト値はすべてnullです.これはアクションScript 3.0によって適用されます. 
定義されたすべてのクラスおよび作成されたすべてのカスタムクラス. 
Boolean、Number、intまたはuintタイプの変数に対して、nullは有効値ではない.このような変数に値nullを付与しようとすると、値は
このデータタイプのデフォルト値.Objectタイプの変数には、null値が付与されます.Objectタイプの変数に値undefinedを付与しようとすると、
値はnullに変換されます. 
Numberタイプの変数には、isNaN()という特殊なトップ関数があります.変数が数字でないと、この関数はブール値trueを返します.そうでないと、
falseを返します.