if文による条件分岐を学ぼう!
if文を使ってonEnterFrameを停止する
では、再びサンプルのonEnterFrameを停止する処理をif文を使って命令します。if文の条件式は「distanceXの値が1以下になる場合」です。そして条件を満たした場合に実行する処理は「delete this.onEnterFram」です。連続再生のonEnterFrameを停止させる命令は「delete」です(リスト4)。サンプルファイルはこちらからをダウンロード(http://www.thinkit.co.jp/images/article/81/3/8132.zip)できます(8132.zip/23.2 KB)。
リンゲージ(識別子)とattachMovie
これまでは、ムービー作成する場合、あらかじめ決まったインスタンスをタイムライン上に置いて動かしてきましたが、次はスクリプトを使って、動的(ダイナミック)にインスタンスを生成するムービーを作成してみましょう。
出来上がりのイメージはステージ上の任意の場所をクリックして、その位置から波紋が広がり消えていくムービーです。サンプルファイルはこちらからをダウンロード(http://www.thinkit.co.jp/images/article/81/3/8133.zip)できます(8133.zip/6.27 KB)。
まず円のイラストを作成します。波紋を表現したいので、真ん中に向かったグラデーションにしました。これをムービークリップにシンボル化します。この時、円の基準点は上下センターにします。
スクリプトを使ってインスタンスを生成するには、ライブラリからムービークリップを動的に配置できるように登録する必要があります。これが「リンゲージ(識別子)」と呼ばれるシンボルにスクリプト上の名前をつる作業になります。
ライブラリ上で登録された「シンボルの名前」は、あくまでもflaファイル上のデータであって、実際のパブリッシュ時にはswfには書き出されません。リンゲージ名を登録することで、はじめてActionScriptで呼び出すことができます。
リンゲージの登録手順は以下になります。
1番目に「ライブラリ」パネルのオプションメニューから「リンゲージ…」を選択します。
2番目に「リンゲージ」の項目から「ActionScriptに書き出し」にチェックを入れます。
3番目に「識別子」に「bubble」と名前をつます。
次に波紋の広がりを、拡大プロパティと透明プロパティ、そしてif文を使って記述していきます。ムービークリップ「泡」の第1フレームに以下のフレームアクションを記述します(リスト5)。
初期値として、3つの変数を登録します。泡の拡大率「percent」、泡の比率「nScale」、泡の最大値「max」です。ムービーの仕組みとしては、泡の比率「nScale」に、拡大率「percent」10%を足していきます。連続して足す方法は前回のサンプルと同じonEnterFrameを使用します。泡の最大値の「max」300%を超えたら、透明プロパティ値_aplhaで消えていきます。