私は単純なゲームのサウンドマネージャーを作成しようとしていますが、私はこのアプリケーションでは必要ないと知っていますが、私はそうしています。 私はいくつかのアプローチを試しましたが、実際の成功はありません。以下は私の現在の試みです。 私の主な問題は、私のファイルが読み込まれないような試行ごとに私のXMLリクエストにあると思います。HTML5/Javascript web audio api - SoundManager
どこが間違っているのか、どういうことをすべきかアドバイスをいただければ幸いです。
マイオーディオマネージャが(遠い完全からではなく、音をロードして再生してください)
var audioctx = new (window.AudioContext || window.webkitAudioContext)();
function AudioManager(totalsounds) {
this.ctx = audioctx;
this.sounds = {};
this.totalSounds = totalsounds;
this.loaded = 0;
this.masterGain = this.ctx.createGain(); // master gain control
this.masterGain.connect(this.ctx.destination);
this.loadSound = function(name) {
this.sounds[name] = new Sound(name, this);
console.log("sound Loaded?");
};
this.play = function(name) {
if(this.sounds[name] !== undefined)
{
this.sounds[name].source.start(0);
console.log("playing?");
} else
{
console.log(name + " - sound not found!");
}
};
};
サウンドオブジェクトマネージャによって作成され、内部に保存された。(コードは、ファイルをロードしないように思える)
function Sound(name, audiomanager){
this.manager = audiomanager;
this.source;
this.request = new XMLHttpRequest();
this.request.open('GET', name, true);
this.request.responseType = 'arraybuffer';
console.log(" i think code stops here");
this.request.onload = function() {
this.manager.loaded += 1;
console.log("loaded?");
this.manager.ctx.decodeAudioData(this.request.response).then(function(buffer){
this.source = manager.ctx.createBufferSource();
this.source.buffer = buffer;
this.source.connect(manager.masterGain);
});
};
this.request.send();
}
私はそれを次のようにテストしようとします。
var audio = new AudioManager(1);
audio.loadSound("test.mp3");
if(audio.loaded == audio.totalSounds){setTimeout(game, 50);}
function game() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
setInterval(function() {
if(buttonDown[5])
{
audio.play("test.mp3");
}
},100);
ありがとうございました。
。しかし、xhrの 'onload'における' this'は、 'Sound'オブジェクトではなく、xhrリクエスト自体を参照します。 ( 'decodeAudioData'コールバックbtwで同じことになります)。だから、おそらくあなたのdev - toolsコンソールで発生したエラーがあります。ありがとう。 – Kaiido
この問題には意味があります。私の最後の試みは代わりに自己変数を使っていました。それを送信するためには私は私のコピーと貼り付けに失敗したに違いない。私はそれを非難するつもりはないので、それを編集し直します。 –
注:Java!= JavaScript .. [tag:javasound]タグはこの質問とは無関係です。 –