ActionScript 3.0で始めるオブジェクト指向スクリプティング

第23回 クラスのデザインとループ処理

この記事を読むのに必要な時間:およそ 8 分

ループ処理で複数のインスタンスを生成する

今回の残る課題は,フレームアクションで複数のインスタンスを生成する処理だ。同じようなパターンのステートメントを必要な分だけ繰返したいとき,ループ処理という構文を用いる。具体的には,forステートメントを使ってみることにしよう。シンタックスは,つぎのとおりである。

for (初期設定; 継続条件; 更新処理) {
   // 繰返し処理
}

第1の初期設定は,繰返し処理を始める前に行っておく設定だ。多くの場合,処理回数を数えるカウンタ変数の値が設定される。第2は,繰返し処理を継続する条件である。終了条件ではないことに注意が必要だ。また,誤ってfalseにならない条件を指定すると,無限ループに陥ってしまう。第3は,ひとつのループごとに行われる更新処理を記述する。カウンタ変数を使ったときは,その増減の処理(カウントアップ/ダウン)が定番だ。

それでは,Flashムービー(FLA)ファイルのフレームアクションを,forループによる処理に書直してみよう。作成するEllipticMotionインスタンスの数も,6つに増やすことにするスクリプト3⁠。

スクリプト3 forループでEllipticMotionインスタンス6つを等間隔に配置する

// タイムライン: メイン
var myCenter:Point = new Point(stage.stageWidth / 2, stage.stageHeight / 2);
var myRadius:Point = new Point(100, 50);
var nCount:uint = 6;
var nDegree:Number = 360 / nCount;
for (var i:int = 0; i < nCount; i++) {
  var _mc:EllipticMotion = new EllipticMotion(nDegree * i, myCenter, myRadius);
  addChild(_mc);
}

forステートメントでは,第1に初期設定として,カウンタ変数iを整数(int型)で宣言した。第2の継続条件は,カウンタ変数値が変数nCountの値6未満の間だ。第3に更新処理で,カウンタ変数を1ずつカウントアップする。++はインクリメントの演算子で,⁠+= 1」と同じ処理になる※3⁠。カウンタ変数iの初期値は0なので,ループ処理は都合6回行われる。

forステートメントのコードブロック{}内では,インスタンスを作成して,それを表示リストに加えている。コンストラクタEllipticMotion()の第1引数に渡す角度は,カウンタ変数iを掛け算して,均等間隔に配置した。なお,コードブロックの中で変数_mcをvar宣言しても,初期化は1度行われるだけなので,エラーになることはない。[ムービープレビュー]を確かめると,6つのインスタンスが楕円軌道に配置されて回転する図6⁠。

図6 6つのインスタンスが楕円軌道を描いてアニメーションする

図6 6つのインスタンスが楕円軌道を描いてアニメーションする

次回は,インスタンスの重ね順を正しく設定するとともに,アニメーションの回転する速さをマウスポインタの位置に応じて変えてみたい。

※3)

演算子++は,オペランド(被演算子)の前につけるか後につけるかによって,プリインクリメントとポストインクリメントがある。本文の例では,どちらを用いても処理内容は変わらない。

違いはインクリメントと同時に値を変数に代入したり,引数に渡した場合に生ずる。プリインクリメントは加算後の値,ポストインクリメントは加算前の値を返すからである。

var pre:int = 0;
var post:int = 0;
var preReturn:int = ++pre; // 代入する前に加算
var postReturn:int = post++; // 代入してから加算
trace(pre, preReturn);   // 出力: 1 1
trace(post, postReturn);   // 出力: 1 0

今回解説した次のサンプルファイルがダウンロードできます。

著者プロフィール

野中文雄(のなかふみお)

ソフトウェアトレーナー,テクニカルライター,オーサリングエンジニア。上智大学法学部卒,慶応義塾大学大学院経営管理研究科修士課程修了(MBA)。独立系パソコン販売会社で,総務・人事,企画,外資系企業担当営業などに携わる。その後,マルチメディアコンテンツ制作会社に転職。ソフトウェアトレーニング,コンテンツ制作などの業務を担当する。2001年11月に独立。Web制作者に向けた情報発信プロジェクトF-siteにも参加する。株式会社ロクナナ取締役(非常勤)。

URLhttp://www.FumioNonaka.com/

著書