Edit 2 : Voici le code qui fonctionne. Un grand merci à Piotr pour son aide, je n'aurais pas pu le faire si facilement sans vous.
sceneEl.querySelector('a-sound').setAttribute('sound', {src:url3});
let playing = false;
var el = document.querySelector('a-box');
let audioEl = document.querySelector("a-sound");
var audio = audioEl.components.sound;
el.addEventListener('click', () => {
if (!playing) {
audio.playSound();
} else {
audio.stopSound();
}
playing = !playing;
})
} );
request.send( null );
}
});
Edit : J'ai obtenu la lecture du son à partir d'une URL dynamique (dans mon fichier JSON), mais je n'arrive pas à obtenir la bonne fonction d'écoute d'événement (pour la lecture / pause au clic).
sceneEl.querySelector('a-sound').setAttribute('sound', {src:url3});
let audioEl = document.querySelector("a-sound");
let audio = audioEl.components.sound;
sceneEl.querySelector('a-box').addEventListener('click', function () {
if(!playing) {
audio.play();
} else {
audio.pause();
audio.currentTime = 0;
}
playing = !playing;
});
} );
request.send( null );
}
});
Original : J'utilise ce dans A-Frame, mais je cherche à lire le son à partir du src de l'entité ('a-sound') plutôt qu'à partir du lien de l'actif. La raison en est que je charge les fichiers sonores dynamiquement à partir d'un tableau JSON et qu'ils n'existent pas dans la liste des ressources. J'ai chargé tous mes fichiers mais j'ai du mal à faire en sorte que ce composant s'accroche à mes fichiers chargés. sceneEl.querySelector('a-sound').setAttribute('sound', {src:url3});
code. Je pense que c'est juste un petit problème de syntaxe mais je ne suis pas sûr à 100%. Quelqu'un pourrait-il regarder ce code pendant une minute et me dire si c'est faisable ? Voici le code (identique à celui du lien, à l'exception du (a-sound) dans le querySelector.
AFRAME.registerComponent('audiohandler', {
init:function() {
let playing = false;
let audio = document.querySelector('a-sound');
this.el.addEventListener('click', () => {
if(!playing) {
audio.play();
} else {
audio.pause();
audio.currentTime = 0;
}
playing = !playing;
});
}
})
</script>