Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Zvuk nefunguje tak ako má v javascripte (chrome)

Nedávno som začal pridávať zvukové efekty do mojej hry na ktorej pracujem v html5.. Problém je že keď zvuk skúšam na edge tak funguje ako má, no keď ho skúšam na chrome tak zvuk vždy začne veľmi ticho a začne naberať hlasitosť a taktiež niektoré zvuky sa opakujú rýchlejšie na chrome ako na edge.. Nechápem prečo sa nemozu prehravat zvuky rovnako na vsetkych prehliadačoch.. Vedel by mi niekto pomoct? Všetky zvuky su vo formate .wav

Kod mam takto:

normalne nahravam audio

grass0 = new Audio('grass0.wav');
grass1 = new Audio('grass1.wav');
dirt0 = new Audio('dirt0.wav');
dirt1 = new Audio('dirt1.wav');
wood0 = new Audio('wood0.wav');
wood1 = new Audio('wood1.wav');

a potom ho proste púštam.. zvukove efekty su pre chodenie po roznych materialoch

if(grass0.paused & grass1.paused & dirt0.paused & dirt1.paused & wood0.paused & wood1.paused){
if(blocks[i].id == 1){ //Blok [1]
if(audio[0] == 0){
grass0.play();
audio[0] = 1;
}else{
grass1.play();
audio[0] = 0;
}
}else if(blocks[i].id == 2){ //Blok [2]
if(audio[1] == 0){
dirt0.play();
audio[1] = 1;
}else{
dirt1.play();
audio[1] = 0;
}
}else if(blocks[i].id == 7){ //Blok [7]
if(audio[2] == 0){
wood0.play();
audio[2] = 1;
}else{
wood1.play();
audio[2] = 0;
}
}
}

tu pridavam aj video na zobrazenie problemu v akcii
//na chrome je zvuk hliny pokazeny.. vzdy zacne velmi ticho a casom sa dostane na normalnu hlasitost, ked sa
pusti nejaky iný zvuk tak sa hlasitost hliny zase pokazí a zacne ticho
//na chrome ide zvuk dreva rychlejsie ako na edge.. why?

video: watch

Předmět Autor Datum
Tipol by som to na bug Chrome s kombináciou zvukovky. Na inom PC to robí to isté? Verzia Chrome je p…
los 27.02.2017 22:20
los
Skúšal som to na druhom počítači a fungovalo to tam bez problémov. Na tomto PC mám najnovšiu verziu… poslední
Papier9998 28.02.2017 08:36
Papier9998

Tipol by som to na bug Chrome s kombináciou zvukovky. Na inom PC to robí to isté? Verzia Chrome je posledná? Robí to aj Canary?

Inak kód by som možno skrátil nejako takto (netestované):

function BlockType(name) {
  this.name = name;
  this.audio1 = new Audio(name + '1.wav');
  this.audio2 = new Audio(name + '2.wav');
}

var blockTypes = {
  1: new BlockType('grass'),
  2: new BlockType('dirt'),
  7: new BlockType('wood')
};

var stepAudio = null;
var isOddStep = false;

...

if (!stepAudio) {
  var blockId = blocks[i].id;
  var blockType = blockTypes[blockId];
  if (blockType) {
    stepAudio = (isOddStep = !isOddStep) ? blockType.audio1 : blockType.audio2;
    stepAudio.onended = function() {
      stepAudio.onended = null;
      stepAudio = null;
    };
    stepAudio.play();
  }
}

V princípe ide o to, aby si nemusel upravovať celý program, keď budeš chcieť pridať nový typ bloku.

Edit: Možno by som to skúsil ešte prekódovať do OGG alebo MP3, to by mohlo pomôcť.

Skúšal som to na druhom počítači a fungovalo to tam bez problémov. Na tomto PC mám najnovšiu verziu Chrome a zvukovej karty tak nechápem prečo mi to takto blbne :/. Idem to skúsiť prekonvertovať a dám vedieť. Inak ďakujem za ten kód, určite ho prepíšem (y) :)

Zpět do poradny Odpovědět na původní otázku Nahoru