Web audio API: comment jouer et arrêter l'audio?
je utiliser l'API web audio dans mon jeu en Chrome. Pour lire le son, j'utilise l'API web audio.
Je l'apprendre à partir de l'article: http://www.html5rocks.com/en/tutorials/webaudio/intro/
window.onload = init;
var context;
var bufferLoader;
function init() {
context = new webkitAudioContext();
bufferLoader = new BufferLoader(
context,
[
'0.mp3',
'2.mp3',
],
finishedLoading
);
bufferLoader.load();
}
function finishedLoading(bufferList) {
var source1 = context.createBufferSource();
var source2 = context.createBufferSource();
source1.buffer = bufferList[0];
source2.buffer = bufferList[1];
source1.connect(context.destination);
source2.connect(context.destination);
source1.noteOn(0);
source2.noteOn(0);
}
Cependant, les sons n'ont pas joué. Laissez seul, je veux utiliser note-off est détectée(0) pour les arrêter plus tard.
Ensuite, j'ai trouvé cet article http://updates.html5rocks.com/2012/02/HTML5-audio-and-the-Web-Audio-API-are-BFFs
Et j'ai modifier mon code pour:
var context = new webkitAudioContext();
var analyser = context.createAnalyser();
var source;
var audio0 = new Audio();
audio0.src = '0.mp3';
audio0.controls = true;
audio0.autoplay = true;
audio0.loop = true;
source = context.createMediaElementSource(audio0);
source.connect(analyser);
analyser.connect(context.destination);
Cette fois, c'est joué!
Et voici mon problème: je veux arrêter le son avec un bouton.
J'ai essayé de changer le audio0.autoplay =false;
var play0 = false;
$("#0").click(function(){
if(play0===false){
audio0.src = '0.mp3';
audio0.controls = true;
audio0.autoplay = true;
audio0.loop = true;
source = context.createMediaElementSource(audio0);
source.connect(analyser);
analyser.connect(context.destination);
play0=true;}
if(paly0){
audio0.autoplay=false;}
});
Au lieu de se arrêter, il est joué de nouveau à chaque fois que je clique sur le bouton.
Deux questions:
-
quelle est la différence entre ces deux méthodes audio?
-
Comment puis-je arrêter le son manuellement?
Toute aide est grandement appréciée.
audio0.pause()
?non , mais stop .
Il n'y a pas d'arrêt, il suffit donc de le mettre en pause comme pimvdb suggère.
Vous pouvez combiner cette -
.pause()
et puis .currentTime = 0;
.pouvez-vous écrire un peu de code de l'échantillon? je ne sais pas beaucoup au sujet de l'encodage. alors...
OriginalL'auteur kikkpunk | 2012-10-28
Vous devez vous connecter pour publier un commentaire.
Vous pouvez mettre en pause l'audio de l'élément et l'ensemble de son temps à
0
, de sorte que vous avez effectivement "stop" de la fonctionnalité: http://jsfiddle.net/Z5ZuJ/.OriginalL'auteur pimvdb