サウンドオブジェクト
「サウンドオブジェクト」を作成すると、サウンドを ActionScript で制御する事ができるようになります。
サウンドオブジェクトを使用すると具体的に以下のような事ができるようになります。
● ActionScript での音楽の再生、停止
● 音量の変更
● パンの変更
「音量」と「パン」については ParaFla! や Suzuka でもサウンドの「イベントのプロパティ」・「キーフレーム編集枠」から設定する事ができますが、
ActionScript で制御する場合、可変的なフェードイン、フェードアウトが可能です。
以下はサンプルです。音量に注意してください。
数値を入力して「適用」を押すと設定が反映されます。
サウンドが流れている途中で「適用」することもできます。
「サウンドオブジェクト」を作成するには次のようにします。
オブジェクト名 = new Sound(制御するスプライト);
「オブジェクト名」には、任意のサウンドオブジェクトの名前をつけてください。
「制御するスプライト」には、スプライトのインスタンス名を記述します。
インスタンス名を記述すると、そのスプライト(それ以下の階層も含む)のサウンドのみを制御できるようになります。
複数のサウンドを別々に制御したい場合、複数のサウンドオブジェクトを作ってそれぞれ別々のスプライトを指定します。
全てのサウンドを一括で制御したい場合は「_root」と指定するか、空欄にしておいてください。
以下は全てのサウンドを制御できるサウンドオブジェクト「sobj」を作成する例です。
sobj = new Sound();
個別にサウンドを制御できるように、スプライトを指定したサウンドオブジェクトの場合は以下のようになります。
sobj = new Sound(_root.sound.bgm);
次に、実際に使用するサウンドファイルをサウンドオブジェクトに割り当てる準備をします。
ParaFla! ではまず使用したい音楽ファイルを取り込んだら「ファイルのプロパティ」を開き「オブジェクト名」というところにサウンドのオブジェクト名を入力します。
Suzuka の場合は使用したい音楽ファイルを取り込んだら「サウンドのプロパティ」を開き「識別子」というところにサウンドのオブジェクト名を入力し、「このシンボルを書き出す」にチェックします。
ここで、サウンドオブジェクトで指定したオブジェクト名と、ここで入力するオブジェクト名は違うものなので、同じ名前などにしないようにしてください。
サウンドオブジェクトのオブジェクト名は「指定したスプライトのサウンドを制御するための名前」で、
サウンドファイルのオブジェクト名は「サウンドファイル単体の識別名」だと考えてください。
それでは、サウンドオブジェクトに音楽ファイルを割り当てます。
サウンドオブジェクト名.attachSound("音楽ファイルのオブジェクト名");
先ほど作成したサウンドオブジェクトのオブジェクト名と、音楽ファイルにつけたオブジェクト名をそれぞれ記述します。
例えば、「_root」に作成したサウンドオブジェクト「sobj」に、音楽ファイル「se_1」を割り当てる場合、以下のようになります。
_root.sobj.attachSound("se_1");
複数の音楽をそれぞれ別のサウンドオブジェクトに割り当てたい場合、同様に記述して割り当てていきます。
これで、サウンドオブジェクトの作成とサウンドの割り当てをすることができました。
これで音量やパンなどの設定を自由に行うことができます。
ただし、ParaFla! の場合は先程サウンドオブジェクトに割り当てた音楽ファイルを必ずイベントリスト上に配置しておかなければいけません。
イベントは「再生」でも「停止」でも良いので、イベントリストのはじめのほうで必ず「イベントに追加」して配置しておきましょう。
サウンドを再生、停止するには以下のメソッドを使います。
サウンドオブジェクト名.start(); | 指定したサウンドオブジェクトに割り当てられているサウンドを全て再生。 |
サウンドオブジェクト名.stop(); | 指定したサウンドオブジェクトに割り当てられているサウンドを全て停止。 |
stopAllSounds(); | すべてのサウンドを停止する。 |
start()メソッドは引数を指定することで何秒目から再生を開始するか、何回ループ再生するかを指定する事ができます。
指定する必要がないときは引数を省略することができます。
サウンドオブジェクト名.start(再生を開始する秒, ループする回数);
例えば、8秒目から再生を開始して、3回ループ再生させる場合は以下のようになります。
_root.sobj.start(8, 3);
stop()メソッドはサウンドファイルにつけたオブジェクト名を指定する事で、サウンドオブジェクトに割り当てているサウンドを個別に停止することが出来ます。
指定する必要がなければ引数を省略することができ、その場合はそのサウンドオブジェクトに割り当てているサウンドをすべて停止します。
サウンドオブジェクト名.stop("サウンドファイルにつけたオブジェクト名");
サウンドオブジェクト「sobj」に割り当てたサウンドファイル「se_1」を停止する例です。
_root.sobj.stop("se_1");
サウンドオブジェクトに音量を設定すると、そのサウンドオブジェクトに割り当てられているサウンドすべての音量を変化させる事ができます。
サウンドオブジェクト名.setVolume(音量値); | サウンドオブジェクトの音量を設定する。 |
「音量値」には音量の値を0〜100の範囲で指定します。
100 を超える数値を指定することも可能ですが、音が割れることがあるのでなるべく 100 を超える値を指定しないようにしてください。
サウンドオブジェクトの音量の初期値は 100 に設定されています。
例えば音量を 80 に設定するには以下のようにします。
vol = 80;
_root.sobj.setVolume(vol);
音量の値を徐々に増やしていったり減らしていく事によって、サウンドのフェードイン、フェードアウトが実現できます。
サウンドオブジェクトを使用するとパンを設定する事ができます。
パンというのは、ミキサーのステレオチャンネル振り分け機能のことで、右のスピーカと左のスピーカーから出るそれぞれの音を制御するものです。
例えば、右のスピーカーから出る音を80%にし、左のスピーカーから出る音を120%にすると、左のスピーカーから出る音の割合が大きくなります。
パンの設定を利用すれば、右のスピーカーから出る音と左のスピーカーから出る音を調整することができます。
サウンドオブジェクト名.setPan(パンの割合値); | サウンドオブジェクトのパンを設定する。 |
「パンの割合値」には、音量振り分けの割合を-100〜100の間で指定します。
それ以外の値を入れるのはおすすめしません。
-100 ←──…… | ……── 0 ──…… | ……──→ 100 |
左のスピーカー寄せ | 中央 | 右のスピーカー寄せ |
パンの割合は上のようになっています。サウンドオブジェクトのパンの初期値は 0 に設定されています。
以下は、パンを -60 に設定する例です。
pan = -60;
_root.sobj.setPan(pan);
例えば、物が左から右に移動するアニメーションに合わせて、パンを -100 から 100 に変化させれば臨場感のある音響変化をつけることが出来ます。
サウンドオブジェクトに割り当てた音楽の再生が完了すると「onSoundComplete」イベントハンドラが実行されます。
sobj = new Sound();
sobj.attachSound("testsound");
sobj.start();
sobj.onSoundComplete = function(){
trace("再生終了");
};
上記のようにするとまずサウンドが再生され、再生が終了するとトレースウィンドウに文字が出力されます。
sobj2 = new Sound();
sobj2.attachSound("testsound2");
sobj2.start();
sobj2.onSoundComplete = function(){
sobj2.start();
};
上記のようにすると、サウンドが繰り返し再生されます。