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




コメントする