サウンドオブジェクトの使い方

サウンドオブジェクトは音のオブジェクトです。

Flashでは埋め込みサウンド、ストリーミングサウンド、リンケージサウンドの3種類の方法で音が再生できます。

  • 埋め込みサウンドは、タイムラインに設定した音です。BGMなどで使われます。ActionScriptで制御できないことがあるため、あまりお勧めしません。
  • ストリーミングサウンドは読み込みながら再生するサウンドです。
  • リンケージサウンドはリンケージの設定を行ったサウンドです。好きなときに呼び出して使うことができます。

サウンドオブジェクトの生成

サウンドオブジェクトは以下の時に生成されます。

  • new Sound()で生成したとき

サウンドの使用準備

サウンドをActionScriptで使用する際には

new Sound(ムービークリップインスタンス)

でサウンドオブジェクトを生成します。指定したムービークリップインスタンスに埋め込みサウンドが入っている場合には、そのサウンドが割り当てられます。

ムービークリップインスタンスを省略した場合には、thisが指定されたことになります。

例 サウンドの準備

s1_sound=new Sound();

サウンドオブジェクトのプロパティ

duration サウンドの再生時間(ミリ秒)
position サウンドの再生箇所(ミリ秒)

例 durationとposition

s1_sound.duration // s1_soundオブジェクトの再生時間

s1_sound.position // s1_soundオブジェクトの再生箇所

s1_sound.position/s1_sound.duration // s1_soundオブジェクトの再生割合

サウンドオブジェクトのメソッド

attachSound() リンケージサウンドの割り当て
start() サウンドの再生
stop() サウンドの停止
loadSound() 外部mp3ファイルの読み込み
getByteLoaded() ロードしたバイト数
getByteTotal() トータルのバイト数
setVolume() 音量の設定
getVolume() 音量の取得
setPan() 左右の音量の設定
getPan() 左右の音量の取得
setTransform() 詳細な左右の音量の設定
getTransform() 詳細な左右の音量の取得

リンケージサウンドの割り当て

リンケージ設定したサウンドをサウンドオブジェクトに割り当てます。

サウンドオブジェクト名.attachSound(リンケージ名)

例 リンケージサウンドの割り当て

  1. ライブラリに読み込んだサウンドを右クリックしてリンケージ設定をします。ここではmusicと名前を付けます。
  2. フレームアクションに以下のスクリプトを記述します。
s1_sound=new Sound(); // サウンドの使用準備

s1_sound.attachSound("music"); // リンケージサウンドmusicを割り当て

サウンドの再生

サウンドの再生を行います。

サウンドオブジェクト名.start(再生開始箇所[秒], 繰り返し回数)

再生開始箇所が省略された場合には0[秒]が、繰り返し回数が省略された場合には1が指定されたことになります。

(注)埋め込みサウンドに対して使っても効果がありません。

例 サウンドの再生

s1_sound.start(); // サウンドを最初から一度再生

s1_sound.start(5,2); // サウンドを5秒目から2度再生

サウンドの停止

サウンドの停止を行います。

サウンドオブジェク名.stop(リンケージ名)

リンケージ名を省略した場合には、ムービー内の全てのサウンドが停止します。

例 サウンドの停止

s1_sound.stop("music"); // リンケージサウンドmusicを停止

外部のmp3ファイルの読み込み

指定したmp3ファイルを読み込みます。

サウンドオブジェクト名.loadSound(ファイル名, ストリーミングフラグ)

ファイル名は相対パスによる指定だけでなく、URLアドレスから指定することもできます。ストリーミングフラグはtrueを指定するとストリーミングで再生を行います。

例 外部mp3ファイルの読み込み

// リンケージサウンドmusic.mp3ファイルの読み込み
s1_sound.loadSound("music.mp3", false);

// ストリーミングでmp3ファイルの読み込み(フリー音素材ASOBEATさんのMP3を使ってます。)
s1_sound.loadSound("http://yonao.com/asobeat/mp3/bgms/bgm0003aL.mp3", true); 

サウンドオブジェクトのイベントハンドラメソッド

onLoad() サウンドのロードが終了すると発生
onSoundComplete() サウンドの再生が終了すると発生

サウンドの再生終了時に何かを行う場合

サウンドの再生が終了すると発生するイベントで起動されるonSoundComplete()メソッドを使ってサウンドの再生終了時の動作を記述します。下記は関数リテラルを使ったメソッド定義です。

サウンドオブジェクト名.onSoundComplete = function () {
    ブロック
}

例 再生中の再生ボタンを禁止

  1. 再生ボタンオブジェクトのenabledプロパティをfalseにすることで、再生ボタンを押せないようにします。

    【メインタイムラインのフレームアクション】

    s1_sound = new Sound();
    s1_sound.attachSound("music");
    

    【再生ボタンオブジェクト(play_btn)のボタンアクション】

    on(press) {
        s1_sound.start();
        play_btn.enabled=false; // 再生ボタンを押せないようにする
    }
    

    【停止ボタンオブジェクト(stop_btn)のボタンアクション】

    on(press) {
        s1_sound.stop();
        play_btn.enabled=true; // 再生ボタンを押せるようにする
    }
    
  2. 再生が終了したら、enabledプロパティをtrueにして再び再生ボタンを押せるようにします。

【メインタイムラインのフレームアクションに追加】

s1_sound.onSoundComplete = function () {
    play_btn.enabled=true  // 再生ボタンを押せるようにする
}

練習問題

リンケージサウンドを使って以下の機能を実現せよ。

  1. 再生された部分を表示するバーを作成せよ。(ヒント: バーの_xscale(横倍率)プロパティの値をpositiondurationのプロパティを使って変更する。)