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

第4回 関数を使ってパーツ化する

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

前回の第3回変数を使うでは,任意の値がメモリできる変数を使って,スクリプトを作成した。今回のテーマは「パーツ化」だ。Flashでは,グラフィックなどのビジュアルエレメントは,シンボルに変換することで使い回しの利くパーツになる。まとまったスクリプトを簡単に何度でも実行できるようにするためには,その処理を関数として定義すればよい。

時計のシンボルを作成する

前回作成した時計の秒針と分針を,ひとつのパーツにしていこう。まず,ビジュアルエレメントの秒針と分針を,シンボルとしてまとめる。秒針と分針のインスタンス(名前はそれぞれsecond_mcとminute_mc)をともに選択して,コンテキストメニューから[シンボルに変換](ショートカットキー [F8])する図1)。

図1 秒針と分針をまとめて時計のシンボルに変換する

図1 秒針と分針をまとめて時計のシンボルに変換する

シンボルに変換したムービークリップのインスタンス名は, clock_mcとしておこう。これでメインタイムラインにはインスタンスclock_mcがあり,その中に入れ子で秒針のsecond_mcと分針のminute_mcが配置された状態になった。すると,メインタイムラインのフレームアクション(第2回変数を使うのスクリプト2)は,インスタンスのターゲットパスが変わったために動かなくなる。

そこでつぎに,スクリプトを修正しなければならない。修正方法としては,第1にターゲットパスを書替えることが考えられる。スクリプトを記述しているメインタイムラインからの秒針・分針のターゲットパスは,それぞれ clock_mc.second_mcとclock_mc.minute_mcにすればよい図2)。

図2 メインタイムラインのフレームアクションでインスタンスのターゲットパスを修正

図2 メインタイムラインのフレームアクションでインスタンスのターゲットパスを修正

しかし,メインタイムラインのフレームアクションは,時計のシンボルの外に記述されている。したがって,他のムービーにこのムービークリップシンボルのインスタンスを配置したとき,時計としてアニメーションさせるには,インスタンスの置かれたタイムラインにこのフレームアクションを毎回コピーしなければならない。

パーツ化を目指す今回は,スクリプトの第2の修正方法として,このフレームアクションを時計のムービークリップシンボルの第1フレームに移行する図3)。この場合,時計のシンボル内に秒針・分針のインスタンスが存在するので,ターゲットパスは変更の必要がない。

図3 フレームアクションを時計のシンボル内の第1フレームに移行

図3 フレームアクションを時計のシンボル内の第1フレームに移行

ただし,このフレームアクションのままでは,時計のムービークリップインスタンスが表示されるときに1度しかスクリプトは実行されない※1)。そこで,この処理を関数として定義すれば,何度でも繰返し実行することが可能になる。

※1
メインタイムラインで処理を繰返し実行したのと同じように,時計のムービークリップシンボルのタイムラインを2フレームに拡張することも考えられる。しかし今回は,後々の展開や拡張性を考えて,ムービークリップシンボルは1フレームのみの構成とする。

関数の定義と実行

関数を使うためには,(1)定義と(2)実行のふたつのステップが必要だ。関数の「定義」は,関数というかたちで,処理内容をタイムラインにメモリする操作である。関数の「実行」は,そのメモリした内容を取出して,処理を行うことだ。関数の実行は,「呼出し」ともいわれる。1度定義してメモリした関数は,いつでも何度でも呼出して実行することができる※2)。

このふたつのステップは,ネットで音楽を入手して聴く場合と似ている表1)。関数の定義は,音楽データをネットからダウンロードする手順に相当する。音楽データはディスクに記録するのに対して,関数はRAMにメモリするという違いがあるだけだ。このステップは,再生(音楽)あるいは呼出し(関数)の前にやっておかなければならい。ただし,内容に変更がないかぎり,1度だけ行えば足りる。

いったんダウンロード(音楽)や定義(関数)が済めば,あとはいつでも好きなときに,何度でもディスクあるいはメモリから再生または呼出しすることが可能になる。

表1 関数とネットの音楽を比較

ステップ関数(function)ネットの音楽実行時期
1定義ダウンロード最初に1回
2実行(呼出し)再生ステップ1の後なら,いつでも何度でも
※2
スクリプトで定義した関数は,ActionScriptに定義済みの関数・メソッドと同じように呼出すことができる。このようなユーザーが定義して加える関数を「ユーザー定義関数」と呼ぶ。

著者プロフィール

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

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

URLhttp://www.FumioNonaka.com/

著書

コメント

コメントの記入