Flash CS3 ドキュメンテーション |
|||
| ActionScript 2.0 の学習 > シンタックスと言語の基礎 > ステートメントについて > ループを使用した繰り返しアクション | |||
ActionScript では、指定された回数、またはある条件が満たされている間、1 つのアクションを繰り返すことができます。ループを使用すると、特定の条件が true の場合に、一連のステートメントを繰り返すことができます。ActionScript には、for、for..in、while、および do..while の 4 種類のループがあります。それぞれの種類のループの動作はいくらか異なり、さまざまな目的に役立ちます。
ループの多くは、何らかのカウンタを使用してループの実行回数を制御しています。毎回のループの実行は "反復" と呼ばれます。変数を宣言し、ループが実行されるたびにその変数の値を増加、または減少させるステートメントを記述できます。for アクションでは、カウンタと、カウンタを増加させるステートメントを記述します。
|
ループ |
説明 |
|---|---|
|
|
ビルトインカウンタを使用してアクションを繰り返します。 |
|
|
ムービークリップまたはオブジェクトの子の繰り返し処理を実行します。 |
|
|
条件が満たされている間アクションを繰り返します。 |
|
|
コードブロックの最後で式が評価されることを除き、while ループと同様であるので、ループは必ず最低 1 回は実行されます。 |
最も一般的な種類のループは for ループであり、あらかじめ定義された回数だけコードブロックがループします。たとえば、アイテムの配列があり、配列の各アイテムで一連のステートメントを実行する場合は、for ループを使用し、0 から配列のアイテム数までループします。別の種類のループには、for..in ループがあります。これは、オブジェクト内の名前と値のペアをループし、何らかの処理を実行する場合に非常に役立ちます。これは、Flash プロジェクトをデバッグしていて、Web サービスや外部テキスト/XML ファイルなどの外部ソースからロードする値を表示するときに非常に便利です。最後の 2 種類のループ (while および do..while) は、一連のステートメントをループしたいが、ループする必要がある回数がわからない場合に役立ちます。この場合は、特定の条件が true である限りループする、while ループを使用できます。
ActionScript では、指定された回数、またはある条件が満たされている間、1 つのアクションを繰り返すことができます。ループを定義するには、while、do..while、for、および for..in アクションを使用します。このセクションでは、これらのループに関する一般的な情報を記載します。各ループの詳細については、次の手順を参照してください。
while ステートメントを使用します。 while ループは式を評価し、式が true である場合に、ループの本体で定義されているアクションを実行します。ループ本体のステートメントの実行が完了すると、式がもう一度評価されます。次の例では、ループは 4 回実行されます。
var i:Number = 4;
while (i > 0) {
myClip.duplicateMovieClip("newMC" + i, i, {_x:i*20, _y:i*20});
i --;
}
do..while ステートメントを使用して、while ループと同様のループを定義することができます。do..while ループでは、コードブロックの最後で式が評価されるので、ループは必ず最低 1 回は評価されます。
このことは、次のようにして確認できます。
var i:Number = 4;
do {
myClip.duplicateMovieClip("newMC" + i, i, {_x:i*20, _y:i*20});
i --;
} while (i > 0);
while ステートメントの詳細については、while ループの使用を参照してください。
for ステートメントを使用します。 ループの多くは、何らかのカウンタを使用してループの実行回数を制御しています。毎回のループの実行は "反復" と呼ばれます。変数を宣言し、ループが実行されるたびにその変数の値を増加、または減少させるステートメントを記述できます。for アクションでは、カウンタと、カウンタを増加させるステートメントを記述します。
次の例では、最初の式 (var i:Number = 4) が、反復の開始前に評価される初期化式になります。2 番目の式 (i > 0) は、ループの実行前に毎回チェックされる条件です。3 番目の式 (i--) は、ループ実行後に毎回評価される "再初期化式" と呼ばれるものです。
for (var i:Number = 4; i > 0; i--) {
myClip.duplicateMovieClip("newMC" + i, i, {_x:i*20, _y:i*20});
}
for ステートメントの詳細については、for ループの使用を参照してください。
for..in ステートメントを使用します。 子とは、他のムービークリップ、関数、オブジェクト、変数などのことです。次の例では、trace ステートメントを使用して、[出力] パネルに結果を出力しています。
var myObject:Object = {name:'Joe', age:25, city:'San Francisco'};
var propertyName:String;
for (propertyName in myObject) {
trace("myObject has the property: " + propertyName + ", with the value: " + myObject[propertyName]);
}
この例では、[出力] パネルに結果が次のように表示されます。
myObject has the property: name, with the value: Joe myObject has the property: age, with the value: 25 myObject has the property: city, with the value: San Francisco
このスクリプトを、子ムービークリップなど、特定のタイプの子に対して繰り返すことができます。そのためには、for..in を typeof 演算子と組み合わせて使います。次の例では、instance2 という名前の子ムービークリップインスタンスは、ステージ上のムービークリップインスタンス内にあります。タイムラインのフレーム 1 に次の ActionScript を追加します。
for (var myName in this) {
if (typeof (this[myName]) == "movieclip") {
trace("I have a movie clip child named " + myName);
}
}
for..in ステートメントの詳細については、for..in ループの使用を参照してください。
|
警告 |
|
Flash での反復は Flash Player で非常にすばやく実行されますが、ループはプロセッサによって大きく左右されます。ループ内の反復が多く、各ブロック内で実行されるステートメントが多いほど、消費されるプロセッサリソースも多くなります。また、ループが正しく記述されていないと、パフォーマンスや安定性に関する問題が発生しかねません。 |
各ステートメントの詳細については、while ループの使用など、この章の後の個別のセクション、および『ActionScript 2.0 リファレンスガイド』の各項目を参照してください。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000709.html