前回の「ムービークリップインスタンスをコントロールする」では,ターゲットパスつにいて確認したうえで,ActionScriptに定義済み(ビルトイン)のプロパティや関数を使って,インスタンスをコントロールした。
今回は,任意の値をメモリして利用する仕組みである変数について学習しよう。
秒針と分針のアニメーション
前回は,最後に秒針のアニメーションを作成した。その復習も兼ねて,今度は分針も加えたアニメーションにしてみよう。
メインタイムラインに秒針と分針のインスタンスを配置して,その第1フレームアクションとして以下のスクリプト1を記述する。わかりやすいように,インスタンス名は秒針がsecond_mc,分針はminute_mcとした。秒針は1秒(=1000ミリ秒)につき6度回転する。分針は60秒(=1000ミリ秒×60秒)で6度回転すればよい。つまり,分針の回転角は,秒針の1/60ということだ。
スクリプト1 タイムラインに配置した秒針と分針のムービークリップインスタンスを回転するフレームアクション
second_mc.rotation = getTimer()/1000*6;
minute_mc.rotation = getTimer()/1000/60*6;
メインタイムラインは,第1フレームアクションが繰返し実行されるように,2フレームに広げる(図2)。[制御]メニューから[ムービープレビュー]を実行して,アニメーションを確認してみよう。
いつ変数が必要なのか
前記スクリプト1には,getTimer()関数のミリ秒を秒に換算するgetTimer()/1000という式が2度出てくる。コンピュータは文句をいわないとはいえ,すでに答えの出ている計算を何度もするのは無駄である。何度も使う計算結果は,どこかにメモリしておければ効率的だ。
あるいは,この時計のアニメーションをストップウォッチのように,特定の時刻からの経過時間を計るのに使うとしよう。getTimer()関数は,前回説明したとおり,Flash Playerが起動したときからの経過時間を返す。ストップウォッチの計測開始時に,getTimer()の値が10000ミリ秒(10秒経過)だったとする。すると,スクリプト1のステートメントは,つぎのように変更される。
second_mc.rotation = (getTimer()-10000)/1000*6;
minute_mc.rotation = (getTimer()-10000)/1000/60*6;
計測開始時刻が変わるごとに,2箇所を書替えなければならないというのでは面倒だ。しかも,今はごく単純な例を採上げている。このやり方で複雑な処理を記述すれば,何かひとつ変更があるたびに,何十箇所~何百箇所を修正するはめになることも十分考えられる。
それに,ストップウォッチをつくるとすれば,計測開始時刻をいちいち手で変更するのでなく,SWF再生時にスクリプトでダイナミックに変更したい。
以上のような場合に使うのが「変数」だ。変数には,値をメモリすることができる。メモリした値は,いつでも取出すことが可能だ。変数を使って式を記述すれば,メモリした値を変更するだけで,その変数を使ったすべての式の処理に結果が反映される。変数の値は,スクリプトでダイナミックに書替えることもできる。
- 変数を使う場合
-
- 同じ値を何度も利用するとき。
- 値をパラメータのように指定して一括修正したいとき。
- 値をスクリプトでダイナミックに変更したいとき。

