2017年03月09日

開発日誌3(音声の出力2)

開発日誌2のAudioを利用して、wavを連続して再生するコードを書きました。

//音声ファイルの場所
var SOUND_PATH = "./sound/";
//ファイル名の配列
var Strings = ["あ","い","う","え","お"];
//再生回数
var PlayedCount = 0;
//音声ファイルのパスの配列
var FullPathArray = [];

//ファイルのFullPathの作成
function MakePath(Path,Strings){
var SoundsPath =[];
//逆に配列に追加(逆に格納する方が速いらしい)
for(i=Strings.length-1;i>=0;i--){
SoundsPath.unshift(Path+Strings[i]);
}
//配列を返す
return SoundsPath;
}

//音声の再生
function SoundPlay(){
FullPath = FullPathArray[PlayedCount];
var audio = new Audio(FullPath + ".wav");
audio.play();
//再生回数がwavファイルの総数以下の場合、ennedイベントを拾う(この際呼び出す関数を自身にすることでループを形成する)
if(PlayedCount audio.addEventListener("ended", SoundPlay, false);
PlayedCount++;
}
//再生回数がwavファイルの総数と同じになったらループを抜けて、再生回数を初期化する
else if(PlayedCount==FullPathArray.length){
PlayedCount=0;
}
}

//動作確認
FullPathArray = MakePath(SOUND_PATH,Strings50);
SoundPlay();

上記のコードを動かすと、"あ"~"お".wavを順番に再生します。
はじめはfor文によるループを考えていましたが、上手くいかなかったため、代替案として作ったコードです。
このコードはきちんと動作するのですが、再生範囲を指定してファイルを再生した場合、endedイベントが拾えず、ループが作れないという問題点を抱えています(-_-;)
  


Posted by 才田一 at 23:11Comments(1)開発日誌