dポイントプレゼントキャンペーン実施中!

初めまして。
AS3.0をまだ勉強中で見よう見まねで作っている状態ですが、
なんとか完成させたいのでご教授ください。

■目標
ボタンをクリックすると外部mp3が再生。
ただし、音声は複数ありクリックする度にランダムでmp3を再生するようにしたいです。

■現状
現状はランダムに読み込んでクリックすると再生まではできたのですが、
何度クリックしても最初に読み込んだ同じ音声しか再生されません。
ひたすら繰り返しにすればよいのかと思い、2フレーム目を用意したところ、
ランダム再生にはなったのですが、何もしていない状態でもひたすら読み込みを続けてしまい理想の動きではありませんでした。クリックする度にランダムで読み込めればと思いますが、
どのように書けば良いのかわかりません、よろしくお願いします。

・ボタンインスタンス名
play_btn

・ファイル
mp3/sound0.mp3
mp3/sound1.mp3
mp3/sound2.mp3

・環境
windows7
FlashCS5
ActionScript3.0

************ソース***************

import flash.net.URLLoader;

var rand_num:int = Math.floor(Math.random() * 2);
var name_str:String = "mp3/sound" + rand_num + ".mp3";
var mp3_url:URLRequest = new URLRequest(name_str);
var sndCh:SoundChannel;
var snd:Sound = new Sound();

snd.load(new URLRequest(name_str));
play_btn.addEventListener(MouseEvent.CLICK, xPlayClick);
function xPlayClick(evt:MouseEvent):void {
sndCh = snd.play(0, 1);
}

*************END***************

よろしくお願いします。

A 回答 (1件)

たしか Sound か SoundChannel のどちらかが使いまわし出来なかったと思うので、


新しくインスタンスを作り直す必要がある覚えがあります。
その為、ちゃんとクリアの後処理を入れておかないとメモリリークの原因になります。
(単一ならそうでもないと思いますが)

あと、現状のソースだとmp3ファイルの読み込みが完了しないと再生されないと思うので、
サイズが大きくて再生までに時間がかかるのを回避するためにストリーミング再生出来るようにしたらどうでしょう?

具体的なやり方ですが、Adobeのヘルプに「Podcast Player」のサンプルがあります。
http://help.adobe.com/ja_JP/ActionScript/3.0_Pro …

サンプルファイルは以下からDLできます。(色んなサンプルの詰め合わせで ZIP, 42 MB)
http://livedocs.adobe.com/flash/9.0/main/samples …

基本的には、SoundPlayer.as と SoundFacade.as の動きをみればだいたい分かると思います。
今後拡張したいと言う時に参考になる良いサンプルだと思いますよ。
    • good
    • 0
この回答へのお礼

ありがとうございました。
色々と参考にしつつなんとか完成させることができました!

お礼日時:2011/12/19 13:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!