for..in ステートメント

 for (variableIterant in object) { ]
statement(s);
} 

オブジェクトのプロパティまたは配列のエレメントに対して反復処理を行うもので、各プロパティまたはエレメントに対して statement を実行します。for..in アクションでは、オブジェクトのメソッドは列挙されません。

プロパティの中には、for..in アクションで列挙できないものがあります。たとえば、_x や _y のようなムービークリッププロパティは列挙されません。外部クラスファイルでは、インスタンスメンバーとは異なり、静的メンバーは列挙されません。

for..in ステートメントは、反復処理されるオブジェクトのプロトタイプチェーン内のオブジェクトのプロパティに対して反復します。オブジェクトのプロパティが最初に列挙され、次にそのプロトタイプのプロパティが列挙され、さらにそのプロトタイプのプロトタイプのプロパティが列挙されます。以下同様です。for..in ステートメントは、同じプロパティ名を繰り返して列挙しません。オブジェクト child にプロトタイプ parent が存在し、両方に prop プロパティがある場合、child の for..in ステートメントは、child の prop は列挙しますが、parent のプロパティは無視します。

for..in ステートメントによって実行するステートメントブロックを囲む中カッコ ({}) は、実行するステートメントが 1 つしかない場合は必要ありません。

for..in ループをクラスファイル (外部 AS ファイル) 内に記述した場合、インスタンスメンバーをループで使用することはできませんが、静的メンバーはループで使用できます。ただし、クラスのインスタンスの FLA ファイル内に for..in ループを記述した場合、インスタンスメンバーは使用できますが、静的メンバーは使用できません。

使用できるバージョン : ActionScript 1.0、Flash Lite 2.0

パラメータ

variableIterant: String - 反復子の役割を果たし、オブジェクトのプロパティまたは配列内のエレメントを参照する変数の名前。

次の例では、for..in を使用したオブジェクトのプロパティに対する繰り返し処理を示します。

var myObject: Object = {firstName: "Tara", age: 27, city: "San Francisco"}; 
for (var prop in myObject) { 
 trace("myObject."+prop+" = "+myObject[prop]); 
} 
//出力 
myObject.firstName = Tara 
myObject.age = 27 
myObject.city = San Francisco

次の例では、for..in を使用した配列のエレメントに対する繰り返し処理を示します。

var myArray: Array = new Array("one", "two", "three"); 
for (var index in myArray) 
 trace("myArray["+index+"] = " + myArray[index]); 
// 出力 : 
myArray[2] = three 
myArray[1] = two 
myArray[0] = one

次の例では、for..in で typeof 演算子を使用して特定のタイプの子に対して反復処理を行います。

for (var name in this) { 
 if (typeof (this[name]) == "movieclip") { 
 trace("I have a movie clip child named "+name); 
 } 
}

メモ : ムービークリップが複数ある場合、その出力はそれらのクリップのインスタンス名で構成されます。

次の例では、ムービークリップの子を列挙し、それぞれを対応するタイムラインのフレーム 2 に進めます。RadioButtonGroup ムービークリップは親であり、_RedRadioButton_、_GreenRadioButton_、_BlueRadioButton_ といういくつかの子を持っています。

for (var name in RadioButtonGroup) { RadioButtonGroup[name].gotoAndStop(2); }