AS3.0で、サウンド再生

サンプルを表示

AS3でサウンドを再生する仕組みはいたってシンプル
以前の、外部ファイル読み込みの例と同じく、リンケージプロパティにクラス名を入れましょう。
「OK」を押すと、なんか変な警告が出るので無視。

sound.png

なんとなく「Soundクラスのサブクラスになるんだな~。」程度の認識でいいと思います。

準備が出来たら早速コーディング。

//リンケージさせたサウンドのインスタンスを生成
var se_sound:Sound_0 = new Sound_0();

/*
外部MP3ファイルの読み込み
load_sound.load(URLRequest)もしくは、var load_sound:Sound = new Sound(URLRequest)
で、サウンドを読み込み、生成する。
*/
var url:URLRequest = new URLRequest("test_sound.mp3");
var load_sound:Sound = new Sound();
load_sound.load(url);

btn0_mc.buttonMode = true;
btn1_mc.buttonMode = true;

btn0_mc.addEventListener(MouseEvent.CLICK , soudPlay);
btn1_mc.addEventListener(MouseEvent.CLICK , loadSound);

function soudPlay(event:MouseEvent):void{
    //リンケージサウンドの再生
    se_sound.play();
}

function loadSound(event:MouseEvent):void{
    //読み込みサウンドの再生
    load_sound.play();
}

/*
サウンドの読み込み状況を取得するためのイベントリスナー
今回は、MP3ファイルのサイズが小さいため一瞬でDLが終わるけれど、ファイルサイズが大きい場合は
Flvのような、プログレッシブダウンロードになるっぽい。
*/
load_sound.addEventListener(ProgressEvent.PROGRESS, progressHandler);
load_sound.addEventListener(Event.COMPLETE, completeHandler);

function progressHandler(event:ProgressEvent):void{
    loading_txt.text = load_sound.bytesLoaded.toString() + "/" +  load_sound.bytesTotal.toString() + " Byte";
}
function completeHandler(event:Event):void{
    loading_txt.appendText("\nLoad Complete. Ready.");
}

とまぁ、ライブラリから生成するか、load(url)したサウンドクラス(サブクラス)のインスタンスで
playメソッドを実行するだけと、拍子ぬけするくらい簡単ですね。

一個だけ注意すべきは、「load_sound.load(url)」を実行した後は、「load_sound」インスタンスで、loadメソッドは2度と実行できません(いや、nullとか入れれば出来るかもしれんけど。。。)
てなわけで、複数のMP3サウンドを読み込んで利用する場合は、AS2.0までは、ひとつのインスタンスでそのつどloadしてやれたけれど、AS3.0からは、都度インスタンスを生成してやる必要がありそう。
まぁ、その分、swfファイル中にキャッシュ出来るってことなんだけれど。。。これはこれで便利かな。

あとはVolumeとかPanとか、いろいろいじれるんで、試してガッテン。

コメントする

トラックバック(0)

このブログ記事を参照しているブログ一覧: AS3.0で、サウンド再生

このブログ記事に対するトラックバックURL: http://studio-ensyu.sakura.ne.jp/mt/mt-tb.cgi/12