11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,
je finalise un jeux en canvas après de longs mois de développement, je reviens sur la partie audio après l'avoir laissée tomber pendant longtemps suite à de nombreux problèmes et des comportements différents suivant les navigateurs. En gros l'audio dans un jeux html5 c'est l'horreur.

Il s'agit d'un shoot them up, quand je tire des balles, un son se joue, je souhaite avoir une continuité dans le son. donc une boucle (loop). pour simuler un "piou piou piou" infini

j'ai un peu tout essayé, le son est chargé en ogg ou mp3 suivant la possibilité du navigateur avec "canPlayType". pas de problème de ce coté là.

une fois le son fini je veux qu'il se rejoue.

un simple loop met quelques millisecondes avant de se rejouer quelque soit le navigateur donc ca ne va pas.


la je viens de tester de faire de la facon suivante:

SndPiu=new Audio(SRCsnd+ '/pioupiou' +EXTsnd);

une fois que j'ai tiré, le son se rejoue:
// le son dure 1.5
SndPiu.addEventListener('timeupdate', function (){ 
  if (this.currentTime >= 1.3) {          
      this.currentTime=0;
  }
}, false);
l
en gros cela permet, avant que le son soit fini, de le remettre à zéro pour éviter d'avoir un blanc.

ca marche très bien sur chrome et l'effet voulu est là. par contre sur firefox et safari, j'ai encore un blanc entre deux lectures alors qu'ils comprennent bien le addEventListener('timeupdate') ainsi que le currentTime.

Je n'ai plus d'idées.. si quelqu'un a déjà été confronté à ce problème une petite aide serait grandement appréciée!
Modifié par canvasdev (02 Feb 2013 - 12:45)
Salut,

Je suis confronté au même problème,

je n'ai pas trouvé de solution, as tu réussis de ton côté ?
Bonjour, non pas trouvé de solution.
Pour ne plus perdre de temps au lieue de jouer un son court je joue un son qui dure 20 secondes du coup la coupure ne se ressent pas vraiment.

un gros fichier son au lieu de pleins de petits.
j'ai répété le son dans un mp3 avec Audacity.

il commence sur un keydown et s'arrête sur un keyup
ou un touchstart / touchend sur Ipad.

l'effet voulu est là mais j'aurais préféré faire autrement que de charger plusieurs gros mp3/ogg

vivement que tous les navigateurs soient plus performant sur les webapp au niveau des sons, des canvas (shadows, gradient, draws etc)
Modifié par canvasdev (05 Feb 2013 - 23:26)
Salut,

Tu penses que c'est parce que le son est chargé lorsqu'on l'invoque?
J'ai jamais dû travaillé sur cette partie, un ami l'a fait pour un projet collectif. Je vais voir si je le retrouve.

Bien à vous.