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

第3回 変数を使う

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

前回のムービークリップインスタンスをコントロールするでは,ターゲットパスつにいて確認したうえで,ActionScriptに定義済み(ビルトイン)のプロパティや関数を使って,インスタンスをコントロールした。

今回は,任意の値をメモリして利用する仕組みである変数について学習しよう。

秒針と分針のアニメーション

前回は,最後に秒針のアニメーションを作成した。その復習も兼ねて,今度は分針も加えたアニメーションにしてみよう。

図1 回転する秒針と分針のアニメーション

図1 回転する秒針と分針のアニメーション

メインタイムラインに秒針と分針のインスタンスを配置して,その第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)。[制御]メニューから[ムービープレビュー]を実行して,アニメーションを確認してみよう。

図2 メインタイムラインに第1フレームアクションを記述して2フレームに拡張する

図2 メインタイムラインに第1フレームアクションを記述して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再生時にスクリプトでダイナミックに変更したい。

以上のような場合に使うのが「変数」だ。変数には,値をメモリすることができる。メモリした値は,いつでも取出すことが可能だ。変数を使って式を記述すれば,メモリした値を変更するだけで,その変数を使ったすべての式の処理に結果が反映される。変数の値は,スクリプトでダイナミックに書替えることもできる。

変数を使う場合
  1. 同じ値を何度も利用するとき。
  2. 値をパラメータのように指定して一括修正したいとき。
  3. 値をスクリプトでダイナミックに変更したいとき。

著者プロフィール

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

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

URLhttp://www.FumioNonaka.com/

著書

コメント

コメントの記入