Flashでアニメーションやゲームを作成する際に重要なポイントとなるのが「音」です。ちょっとした効果音やBGMでムービー全体の雰囲気や,操作を行うときの爽快感などを演出することができます。今回はFlash,特にActionScriptを使って好きなタイミングで音を制御する処理をご紹介します。

ActionScriptを使って音を鳴らす

 図1のムービーは,ユーザーが押したボタンに応じて異なるBGMを鳴らすムービーです。同じような絵でも,背景に流れる音楽でちょっと印象が変わってきますね。

図1:効果音やBGMを使ったムービー(クリックするとムービーを表示します)

 このムービーの「音」は,すべてActionScriptを使って鳴らしたり,止めたり,ボリュームを調節したりといった操作を行っています。効果音やBGMがあることで,ムービーの雰囲気もぐっと華やかになりますね。

ActionScriptで音を制御する際の二つの考え方

 ActionScriptで音を制御する際には,大きく分けて二つの考え方・手法があります。一つはFlashムービー内に音素材ファイルも埋め込んで使用する方法,もう一つは,Flashムービーとは別に外部MP3ファイルを用意し,ムービー再生時に動的にMP3ファイルを読み込んで再生する方法です(表1)。

表1:音を扱う際の二つの考え方
手法説明
Flashムービーに埋め込むオーサリング時に[ライブラリ]パネル内に音源ファイルを読み込み,Flashムービーをパブリッシュする際に,音素材ファイルも埋め込んで書き出す方法。
ムービーのファイル・サイズは音素材ファイルの分だけ大きくなる。Flashムービーの読み込みが完了すれば音源もその時点で自由に扱えるため,効果音・SE,メインBGMなど,ムービーにとって必須の音源がある場合にはこちらが向いている。
外部MP3ファイルを実行時に読み込んで再生Flashムービーとは別にMP3ファイルを配置し,ムービー再生時のユーザーの操作に応じて,MP3ファイルを適宜読み込んで再生する方法。
ムービーのファイル・サイズは埋め込む手法に比べて小さくなる。Flashムービーの読み込みとは別にMP3ファイルの読み込みを行うため,再生するまでにタイムラグが発生する可能性がある。複数のBGMを切り替えて使用したい場合や,音素材の差し替えなどの作業が予想される場合にはこちらが向いている。

 二つの手法の考え方の違いは,Flashムービーに対して,「音素材ファイルを埋めこんでおく」か「音源は別のファイルにする」かの違いです。音素材を埋め込む場合には,Flashムービーを読み込めば,音を鳴らす準備も完了します*1。それに対し,別のファイルにする方法では,Flashムービーとの読み込みとは別に,音源ファイルを読み込む処理を考える必要があります。

 また,ファイル・サイズに関しては,埋め込む場合は音素材の分だけFlashムービーのファイル・サイズが大きくなります。別のファイルにする場合には,Flashムービーのサイズは小さくなります(図2)。

図2:2パターンのファイル構成

 どちらも一長一短があるので,音をどのような場面で使用するかによって,二つの手法を使い分けましょう。

音を埋め込んで利用するには

 さて,二つの手法があることを確認できたところで,今回は基本となるFlashムービーに音素材ファイルを埋め込んで音を制御する方法をご紹介します。ActionScriptから音素材ファイルを操作するには,二つのステップを踏んで用意をする必要があります。

 最初のステップでは,[ライブラリ]パネルに登録した音を,スクリプトから制御できるように「リンケージ」の設定を行います。そのうえで,二つ目のステップとして,音を制御するための機能がまとめられている「Soundクラス」を使って効果音やBGMを再生/停止するコードを記述します。

 では,実際にやってみましょう。まずFlashムービー内で使いたい音素材ファイルを用意します(図3*2。汎用的なBGMや音素材ファイルは,いわゆる「素材集」ソフトを購入するほか,Web上で公開して下さっている方のWebページなどから入手できます*3

図3:音素材ファイルを準備する

 この音素材をFlashドキュメントに取り込み,スクリプトから扱えるようにします。

 新規Flashドキュメントを作成し,任意の名前で保存します。メニューから[ファイル]-[読み込み]-[ライブラリに読み込み]を選択し,表示されるダイアログボックスを使って用意した音素材ファイルを読み込みます(図4*4

図4:ライブラリに読み込まれた音素材ファイル

 ここまでは,以前ご紹介したタイムライン上に音素材ファイルを配置する方法と同じですね。この音素材ファイルをActionScriptで扱えるようにするためには,さらに「リンケージ」の設定を行います。

 [ライブラリ]パネル内からActionScriptで制御したい音素材を選択し,右クリックして表示されるメニューから[リンケージ]を選択します。[リンケージプロパティ]ダイアログボックスが表示されるので,「リンケージ」欄の[ActionScriptに書き出し]をチェックします(図5)。

図5:識別子を設定する

 すると,ダイアログ上部の[識別子]欄にActionScriptからこの音素材を呼び出すときに使用する名前である「識別子」を入力できるようになります。ここに自分が使いやすい任意の名前を入力して[OK]ボタンを押します。今回は「ヒューン!」という音のするSE(効果音)を制御するので「SE_HYUN」としてみました。これで準備は完了です。