日常生活から理解するActionScriptの制御文Flashの基礎を無料で習得! ActionScript入門(3)(2/2 ページ)

» 2008年03月10日 00時00分 公開
[吉村美保クラスメソッド株式会社]
前のページへ 1|2       

for each文 ― リストを1つずつ取り出して ―

 AS 3からfor each文が使えるようになりました。for文に似ていますが、for each文は配列変数などの要素を、1つ1つ読み出すときなどに便利です。

package {
import flash.display.*;
import flash.text.*;

public class Lesson3_2 extends Sprite {
    public function Lesson3_2 () {
        var myObj:Object = {aaa:"111", bbb:"222"};         【1】
        var textField:TextField = new TextField();
        for each (var value:String in myObj) {             【2】
            textField.appendText(value);                   【3】
        }

        addChild(textField);
    }
}
}

 【1】は「連想配列」と呼ばれるものの宣言文です。連想配列は要素名と値をセットで扱える配列です。「aaa:"111"」でいうと「aaa」が要素名、「"111"」が値になります。【2】では、myObjの配列から、要素の値をvalueにString型(文字列型)として1つずつ取り出しながらループしています。【3】では、文字列を連結しています。

 また、AS 3ではすべての型を代入できる「*」(アスタリスク)を型指定することができます。

 先ほどのfor each文を、「for each (var v:* in myObj)」と書くことで、配列内の値の型を意識することなく使用することもできます。for文と違って要素を取り出す順番は保証されませんが、便利な機能です。

 それでは、コンパイルして実行してみましょう。

図6 for each文サンプルの実行結果 図6 for each文サンプルの実行結果

while文 ― 〜の間は処理を繰り返す ―

 while文は条件が満たされている間、処理を繰り返すときに使います。whileの構文は以下のようになります。

カウンタが○○から◇◇の間、処理△△を繰り返す。
while ( 条件○○ ) {
    繰り返したい処理◇◇;
}

図7 日常生活で使うwhile文のイメージ 図7 日常生活で使うwhile文のイメージ

 それでは、whileを使ってプログラムを書いてみましょう。この例はあえてwhileを使わなくてもできますが、記述例として挙げておきます。

package {
import flash.display.*;
import flash.text.*;

public class Lesson3_3 extends Sprite {
    public function Lesson3_3 () {
        var textField:TextField = new TextField();
        var a:int = 1 ;
        while ( a <= 5){                          【1】
            textField.appendText( String(a) );
            a++;                                  【2】
        }

        addChild(textField);
    }
}
}

 【1】では、aが5以下かどうかを比較しています。【2】では、aをインクリメントしています。

 通常、while文はキーボードからの入力に対する処理など、繰り返す回数が分からないときに使います。

do while文 ― 必ず1回は処理 ―

 whileは条件が満たされていなければ1度も処理されないのに対し、do whileは1回は必ず処理を行います。do whileの構文は以下になります。

必ず1回は◇◇。その後、○○の間は処理を繰り返す。
do {
    必ず1回は繰り返したい処理◇◇;
} while ( 条件○○ );

package {
import flash.display.*;
import flash.text.*;

public class Lesson3_4 extends Sprite {
    public function Lesson3_4 () {
        var textField:TextField = new TextField();
        var a:int = 6 ;
        do {
            textField.appendText( String(a) );
            a++;
        } while ( a <= 5);
        addChild(textField);
    }
}
}

 それでは、コンパイルして実行してみましょう。

図8 do while文サンプルの実行結果 図8 do while文サンプルの実行結果

 「6」と表示されました。aは6で初期化されており、whileの条件には当てはまらないのですが、doの中身は実行されています。

switch文 ― caseで処理分け ―

 switch文はif文で書いてしまうと煩雑になってしまうようなコードも、すっきり処理分けしてくれるものです。switch文の構文は以下のようになります。

caseで処理分け
switch ( 式 ) {
case 値1 :
    処理◇◇;
    break ;
case 値2 :
    処理△△;
    break ;
default :
    そのほかの処理■■;
}

 switchの括弧内の式の値によって、ケース分けをします。defaultは当てはまる値がなかったときの処理です。エラーが発生しないように念のため記述しておく方がいいでしょう。

 それでは、switch文を使って、簡単な占いを作ってみましょう。

package {
import flash.display.*;
import flash.text.*;

public class Lesson3_5 extends Sprite {
    public function Lesson3_5 () {
        var textField:TextField = new TextField();
        var a:int = int( Math.random() * 3 );
        switch (a){
        case 0:
            textField.text = “今日のあなたはついてる!”;
            break;
        case 1:
            textField.text = “まあまあの日です。”;
            break;
        case 2:
            textField.text = “普通の日です。”;
            break;
        default:
            textField.text = “判定できません。”;
            break;
        }
        addChild(textField);
    }
}
}

 「Math.random()」は0〜1の浮動小数点数をランダムで返してくれるものです。

 「int( Math.random() * 3 )」はランダムの値に3を掛けて、int型(整数型)に変換しています。このint()は「キャスト」と呼ばれている処理で、例えば、「a=2.345」であった場合、int(a)は小数部を切り捨てて2を返します。こうすることで、aには、0、1、2のどれかの数字が入るようになります。

 コンパイルして実行してみましょう。

図9 switch文サンプルの実行結果 図9 switch文サンプルの実行結果

プログラムの表現に幅を持たそう!

 このように、制御文についていろいろと紹介しましたが、いかがでしたか? いままでよりも複雑なプログラムが書けるようになりましたね。これらの制御文を組み合わせれば、小さなゲームなども作れるようになるかと思います。

 次回は、オブジェクト指向プログラミングで重要な「クラス」の基本概念について説明したいと思います。お楽しみに!

プロフィール

吉村 美保(よしむら みほ)

クラスメソッド株式会社 情報システム部 プログラマー
ゲーム開発、インストラクターなどの経験を経て、クラスメソッド株式会社に入社。入社後はFlexやAIRによるRIA開発を行っている。



前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。