Flashで作るMP3プレーヤーの基礎
Flashのサウンドについて
作成したインターフェースにActionScriptを実装する前に、ここではActionScript 3.0におけるサウンドの扱いについて説明します。その方法はActionScript 2.0からは、ずいぶん変わりました。けっこう複雑になったというか、手順が増えたなぁという感じです。というのもActionScript 2.0においてはSoundクラスだけで事足りていたのですが、ActionScript 3.0からはクラスがいくつかに分かれていて、機能ごとにまとめられ、細分化されています。そのように役割を分担させているため、踏む手順も多くなっています。その分いろいろな局面に対応できるような、柔軟設計になっているのでしょう。それでは主要なクラスを次に紹介します。
主要なクラス紹介
Soundクラスはサウンドを扱うための、もっとも基本的なクラスです(図2)。新しいSoundオブジェクトの作成、外部MP3ファイルのオブジェクトへのロード、そしてそのサウンドを再生することができます。コードサンプルとしては以下のようになります。
private var snd:Sound = new Sound();
snd.load(new URLRequest("mySound.mp3"));
snd.play();
Soundクラスはサウンドを作成して、それを再生するまでが仕事でした。SoundChannelクラスはその後の処理を引き受けます。「サウンドの停止」「サウンドの再生位置」などをコントロールします。このSoundChannelクラスはSound.playで再生したときに戻り値として得ることができます。例えば「再生を止める」というコードを上記の続きとして書くと、以下のようになります。
private var soundChannel = snd.play();
soundChannel.stop();
SoundTransformクラスは、「サウンドのボリューム」「サウンドのパン(左右のボリュームバランス)」をコントロールするためのクラスです。このSoundTransformクラスはSoundChannelオブジェクトのプロパティになります(親となるオブジェクトはSoundTransformだけではなく、他のオブジェクトもありますがここでは割愛します)。例えば「ボリュームが70%で(範囲は0.0~1.0)、右のスピーカーからのみ出力される」という設定を上のコードの続きで書くと、以下のようになります。
var transform:SoundTransform = new SoundTransform(0.7, 1.0);
soundChannel.soundTransform = transform;
外部サウンドファイルに対しては有効ではありません。SoundMixerクラスはタイムラインに直接読み込まれたサウンドのみに適用されます。面白い特徴として、サウンドの波形をスナップショットできるcomputeSpectrumというメソッドを持っています。これを使うとビジュアライズされたサウンドを表現できます。
上記の4つクラスを使ってサウンドを制御します。それでは次のページから、作成済みのインターフェースデザインに対して、ActionScriptを実装します。外部のmp3ファイルを連続再生できるFlashアプリケーション「SimpleRadio」を作成してみましょう。