私たちはHTML5/JavaScriptでリアルタイムの戦略(RTS)ゲームをデモンストレーションしています。しかし、Chrome(非常に最新バージョン)では、音がぼやけてしまい、やがて諦めます。このコードは、最新のFirefox、IE9、Safariで正常に動作します(ただし、iOS4 iPhone/iPadでは全く音は出ませんが、明らかにAppleの商業的決定です)。下のリンクにあなた自身が見ることができますが、すぐに問題を引き起こすためにいくつかの音以上を取得してください。RTSゲームHTML5のオーディオ、ChromeのMP3とOGGのスターターとストップ
http://www.enterprisewarfare.com/Play.aspx
簡略音再生コードは、以下で、それぞれの音を注意して複数のチャネルをシミュレートするために、4回(AUDIO_CHANELS_PER_FILE)が存在します。この数値を調整しても、サウンドの損失が早くも遅くも発生することはありません。そのため、アレイの最後に到達したり、同じオーディオオブジェクトを再び再生することはできません。私たちはOGGとMP3の両方のファイル形式を試しましたが、IE9(MP3)とFirefox(OGG)では問題なく動作します。私たちはまた、ファイルを最初から無駄に探してみました。
this.PlaySound = function(sId)
{
var iSoundMapIndex;
var asoundChannels;
if(sId == null || sId.length == 0) return;
// Grab sound channels array
iSoundMapIndex = this.SoundMap[sId];
asoundChannels = this.Sounds[iSoundMapIndex];
if(asoundChannels == null)
{
this.World.AddMessage("Unable to find sound \"" + sId + "\".");
return;
}
// play the next in sequence
asoundChannels[this.SoundChannel[iSoundMapIndex]].volume = 1;
asoundChannels[this.SoundChannel[iSoundMapIndex]].play();
this.SoundChannel[iSoundMapIndex]++;
if(this.SoundChannel[iSoundMapIndex] == this.AUDIO_CHANNELS_PER_FILE) this.SoundChannel[iSoundMapIndex] = 0;
}
バグが修正された方法*に*気をつけなかったので、投票が遅れました。 – John