わかりました。私の新しいウェブサイトが公開され、Google Apps を通じて配信されました。ひばりに、私はしばらく前に練習として書いた javascript / HTML5 Lunar Lander クローン (火星着陸船) を含めることにしました。ゲームをローカルで開くと正常に動作しますが、GAE 経由で配信すると、すべてのシステムでサウンドがロードされないようです。モバイルサファリでは、どれも読み込まれません。デスクトップのサファリでは、それらはすべて私のコンピューターでは確実に読み込まれますが、他のコンピューターでは読み込まれません。Chrome (デスクトップ) では動作しているように見えますが、iOS の Chrome では 1 つのサウンドしか読み込まれません。デスクトップでは、ロードに失敗するのは常に同じサウンドのようです ( explode1.mp3)、これは私がロードしている最小の音です。ご覧のとおり、そのリンクをクリックすると、サーバーからサウンドが正常にダウンロードされます...
最初は、問題は大文字と小文字の区別に関連しているように見えたので、ファイル名の大文字と小文字を切り替えましたが、その修正は機能し続けませんでした。私の読み込みバーは読み込まれたリソースの数に直接関係しているため、これは問題です。応答のない GET 要求を待っているだけです。特定のリソースですが、リソースを直接ロードするとうまくいきますか?
私はこれらの技術のほとんどに非常に慣れていないので、初心者の間違いを犯した可能性が非常に高いと言わざるを得ません。残念ながら、私は初心者なので、これらの初心者の間違いが何であるかはわかりません!
サウンドをロードするために使用するコードは次のとおりです。
function loadSound(soundName) {
var newElement = document.createElement("audio");
newElement.addEventListener("canplaythrough", assetLoaded, false);
document.body.appendChild(newElement);
var audioType = supportedAudioFormat(newElement);
if (audioType == "") {
alert("no audio support");
return;
}
newElement.setAttribute("src", "lander/sounds/" + soundName + "." + audioType);
console.log("loading sound " + newElement.src + "...");
return newElement;
}
と...
function assetLoaded() {
var assetName = this.src;
numAssetsLoaded++;
console.log("loaded asset " + numAssetsLoaded + " (" + assetName + ")");
if (numAssetsLoaded >= numAssetsToLoad) {
shipSpriteSheet.removeEventListener("load", assetLoaded, false);
pointImage.removeEventListener("load", assetLoaded, false);
thrustAudioElement.removeEventListener("canplaythrough", assetLoaded, false);
explosionAudioElement.removeEventListener("canplaythrough", assetLoaded, false);
victoryAudioElement.removeEventListener("canplaythrough", assetLoaded, false);
musicTrackElement.removeEventListener("canplaythrough", assetLoaded, false);
gameState = GAME_STATE_INIT;
}
}
コンソール出力を見ると、すべてのサウンドのロードが開始されていることがわかります (特に、explode1.mp3) が、必ずしも終了して呼び出しているとは限りませんassetLoaded
...
更新:
コンセンサスは、mp3 を使用してはならない(ちなみに、既に mp3、AAC、および ogg を使用していますが、デフォルトで mp3 に設定している) ことと、Web Audio API を使用する必要があることです。これらはどちらも歓迎すべき情報であり、必要な変更を加えます。しかし、元の質問である「特定のサウンドがデスクトップに確実にロードされないのに、他のサウンドは問題なくロードされるのはなぜですか?」という最初の質問に対する答えはまだありません。誰かがそれをクラックしたいですか?それとも、「これらのことは非常に予測不可能であり、Web Audio API のようなより信頼できる方法論に切り替える以外に修正する方法はありません」のような答えになるのでしょうか?
UDATE:これ
は私のファイルからの抜粋で、app.yaml
GAE がサーバーをセットアップするのに役立ちます。
- url: /(.*\.(mp3|ogg|wav))
static_files: \1
upload: (.*\.(mp3|ogg|wav))