MP3サウンドファイルふたつなら、入れ子にしてもよいとは思います。数があるときは、配列に入れて管理する方法が考えられます。
引用:
kirarinさんは書きました:
_root.sw_BGM = new Sound(this);
_root.sw_BGM.onLoad = function(success) {
if (success) {
//ロード成功
_root.gotoAndPlay("start");
// [中略]
}
_root.sw_BGM.loadSound("BGM1.mp3", false);
これはこれでうまく動作したのですが、実はもう一つダウンロードしたいサウンド(BGM2.mp3)があります。
2つのサウンド(BGM1.mp3とBGM2.mp3)のダウンロードが完了してからフレーム(Start)へ飛んで欲しい場合、どのように記述したらよいのでしょうか?
「ロード成功」の部分に、↑のような記述を入れ子していけばよいのかとも思ったのですが、それではあまり綺麗な書き方ではないような気がして・・・
// _root
// Soundインスタンスのターゲット用にmy0_mcとmy1_mcを配置
// フレームアクション
var nID = 0;
var sounds_array = new Array();
sounds_array.push(["BGM1", new Sound(my0_mc)]);
sounds_array.push(["BGM2", new Sound(my1_mc)]);
xLoadSound();
function xLoadSound() {
if (nID<sounds_array.length) {
var sound_str = sounds_array[nID][0]+".mp3";
var my_sound = sounds_array[nID][1];
my_sound.onLoad = xOnLoad;
my_sound.loadSound(sound_str, false);
++nID;
} else {
xLoadComplete();
}
}
function xOnLoad(bSuccess) {
if (bSuccess) {
//ロード成功
} else {
//ロードNG
}
xLoadSound();
}
function xLoadComplete() {
nID = 0;
_root.gotoAndPlay("start");
}
// サウンド再生用関数(おまけ)
function xPlaySound(nSoundID) {
for (var i = 0; i<sounds_array.length; ++i) {
sounds_array[it][it].stop();
}
var my_sound = sounds_array[nSoundID][1];
my_sound.start();
}
----------------