アクションスクリプト:操作を何度も繰り返し


  Share  
|


したいタスクを実行するため、 1つのフレーム内に複数回します。

ループを使用する同じタスクを実行して、 1つのフレーム内に複数回します。 たとえば、使用することができfor文:

  ( varよい= 0 ;私< 10 ;私+ + ) ( / / i.の値を表示する トレース(私) ; ) 

したいときは、同じアクションを実行する(またはわずかな変化のために) 1つのフレーム内に複数回使用して、ループを使用して、コードをより簡潔な声明は、をより読みやすくして、簡単に更新します。 while文または使用することができ、この目的のために、声明が、通常の声明は、より良い選択します。 両方のステートメントと同じ結果を達成するため、そのためにはもっとコンパクト声明はよく知られているほとんどのプログラマとします。

構文は、 for文の5つの基本的な部分で構成さ:

そのためのキーワード

すべての声明をキーワードで始まる必要があります。

初期化式

通常の従業員のループインデックス変数( a.k.a.ループカウンタ)を初期化するときには、最初の声明は発生します。 初期化が行われ、 1回だけに関わらず、何回のループが繰り返されます。

表現テスト

ループテストを含める表現してtrueまたはfalseを返します。 テストの表現が評価されるたびに1回を通じて、ループします。 通常、テストの表現を別の変数の値を比較し、インデックスのような回数の最大数をループします。 全体を評価するにはtrueを表現する必要があり、声明の体を実行するために(このコントラストを行う。 whileループを実行する少なくとも一度は、たとえ表現のテストがfalse )します。 その半面、表現しない場合、テストがfalseの場合、無限ループを作成するでしょう、と警告して、結果的にフラッシュプレーヤーが実行中で、ゆっくりと(これが表示された後15秒)です。

更新式

アップデートの表現を更新し、通常の変数の値が使用されてテスト表現するので、ある時点で、このテストで誤った表現になると、ループ終了します。 アップデートの表現は、一度実行されるたびにループします。 無限ループが原因で失敗したことを頻繁に更新し、適切な表現の変数を更新します(通常は、同じ変数が使用されて表現テスト)します。

文本体

声明は、体の中括弧ブロックのsubstatementsに囲まれたことが実行されるたびに、ループします。 テストの場合は決して真の表現は、声明の体のためにはありません実行されます。

そのためのキーワードを最初に来なければ、それに続いてなければならないの初期化、テスト、およびかっこで囲まれた表現を更新します。 3つの表現を個別にする必要がありセミコロンから別の1つ(とはいえ、初期化、テスト、および更新するオプションのステートメントは、セミコロンは必須)します。 forループの残りの部分で構成さその声明の中括弧で囲まれた体をします。 フォームでは、全般:

  (初期化;テスト;更新) ( )声明体 

ここでは、例として、声明を出力するための番号0〜999ます。 変数をインデックスに登録するため、ローカル変数iは、私たちの序文で、それをキーワードvarで表現して初期化します。

  ( varよい= 0 ;私< 1000 ;私+ + ) (トレース(私) ; )トレース( "それは終わり"と述べた。 ) ; 

for文を理解する場合は、下記のアクションスクリプトとともに、通訳として処理してコマンドを使います。 で、上記の例では、キーワードを指示するためのインタープリタ内のステートメントを実行している限り、 forループの条件式は真である。 初期化式は、 1回だけ実行して、それを設定する変数iを0にします。 次に、通訳表現をチェックし、試験(私< 1000 )します。 私は0 、これは未満で1000 、という表現はtrueと評価し、トレースアクション( )内のfor文の体は実行されます。 アクションスクリプトを実行し、その後の更新インタープリタ声明で、このような場合+ +私は、私がインクリメントされる1 。 それからそれを繰り返し、インタプリタのプロセスからの上部のループ(しかし、初期化のステップをスキップ)します。 インタープリタので、再びテスト式が真かどうかを確認し、もしそうなら、体のステートメントを実行してください。 それを実行する声明を更新してください。 このプロセスが繰り返され、テストされるまでは、もはや真の表現します。 の最後の値を出力ウィンドウに表示されるのは、 999ので、私は一度に増分した1000は、もはや表現のテストがtrueと評価するループを終わりに来ました。 1回のループが終了すると、続けて何のコマンドを実行してループに従っています。

両方の表現を初期化し、更新を含めることができ、複数のアクションをカンマで区切っています。 次の例は私と同時にインクリメント減少j氏とその値が表示された出力の中のウィンドウ:

  ( varよい= 0 』 j = 10 ;私< 10 ;私+ + 』 j -) (トレース( "私は"私+ ) ;トレース(ある" jは" + j ) ; ) 

前の例と同じではないステートメントを使用するための2つのネストします(これは、次のコードブロックに表示されます) 。

それはまた共通のステートメントを使用するためにネストされます。 ネストを使用する場合、 for文を使用して、さまざまな指標変数に比べて外側のforループが使用されています。 条約によって、外側のforループを使用して変数i 、および変数を使用して、ネストループj. 例えば:

  ( varよい= 1 ;私< = 3 ;私+ + ) ( ( var j = 1 ; j < = 2 ; j + + + ) (トレース(私の" x " + j + " = " + (私* j ) ) ; ) ) 

上記の例で表示され、以下の表の出力ウィンドウの乗算:

  1 × 1 = 1 1 × 2 = 2 × 1 = 2 2 × 2 = 4 3 × 1 = 3 3 × 2 = 6 

巣を作ることが可能になり、複数のレベルの発言をします。 条約によって、各追加レベルのネスティングを使用して次の文字をアルファベットのインデックスとして変数です。 したがって、第3レベルのネストステートメントを使用し、通常のkのインデックス変数:

  ( varよい= 1 ;私< = 3 ;私+ + ) ( ( var j = 1 ; j < = 3 ; j + + ) ( ( var k = 1 ; k < = 3 ;のk + + ) (トレース(私+の" x " + j + " x "を+のk + " = " + ( j * *私k ) ) ; ) ) ) 

また、ステートメントを使用することができ、後方にループ:

  / /逆算10〜1ます。  ( var私= 10 ;私> 0 ;私-) (トレース(私) ; ) 

を使用することはありませんからやり直す時間のタスクを実行するための声明を発表します。

多くのプログラマの過ちを使用しようとするためのムービークリップ有生陳述をします。 例えば:

  ( varよい= 0 ;私< 20 ;私+ + ) ( mymovieclip._x + = 10 ; ) 

上記のコードの動きものの、映画のクリップを200ピクセルの右側にその出発点は、すべてのアップデートと同じフレーム内に行われます。 この2つの問題があります。 まず第一に、ステージごとに1回の更新のみフレームで、これだけの最終更新日が表示さステージの上で(映画のクリップを引き起こしジャンプ200ピクセル突然スムーズに動くというより、 20の手順を実行します) 。 そして2つ目は、たとえ舞台をより頻繁に更新情報は、各反復を通じて、 forループはほんの数ミリ秒ではないので、アニメーションあまりにも速くなるだろうします。 アクションをしたい場所を取る時間以上、使用するonenterframe ( )ハンドラで行います。

また、タイトなループを繰り返してはいけませんを実行するための長いプロセス(何でもそれ以上かかるほんの一秒)です。 フラッシュプレーヤーの警告を表示するたびに、 1つのループを実行するために、 15以上の秒です。 ハンドラを使用してonenterframe ( )またはsetinterval ( )関数を回避できるようにとの警告メッセージが表示さフラッシュ他のアクションを実行するに加えて、アクションが繰り返される部分のループします。

これは、記事を追加したガブリエルサビンビ

Share  

© 2005-2010 E-articles.info All Rights Reserved - Terms and conditions