XMLHttpRequest を使用して、ゲームのファイルをプリロードします。WebAudio がサポートされていない場合は、オーディオ要素の使用に戻ります。
Android では、Firefox では問題なく動作しますが、Chrome ではサウンドが再生されません。ここにいくつかのテストコードがあります:
document.addEventListener('touchstart', function(event) {
event.preventDefault();
if( window.audio ) window.audio.play();
console.log( window.audio );
});
window.audio = null;
var xhr = new XMLHttpRequest();
xhr.open('GET', '/sounds/shotgun.webm', true);
xhr.responseType = 'arraybuffer';
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
var blob = new Blob( new Array( new Int8Array( xhr.response ) ), { type: 'audio/webm' } );
var url = window.URL.createObjectURL( blob )
window.audio = new Audio();
window.audio.src = url;
console.log( 'sound loaded' );
}
};
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send();
これは、オブジェクト URL に関する Chrome for android の問題であると思われます...
とにかく、XMLHttpRequest からキャッシュされたデータを使用して、Chrome for Android でサウンドを再生する方法を探しています。