Je fais un jeu avec HTML5 et Javascript.
Comment pourrais-je jouer l'audio du jeu via Javascript?
javascript
html
html5-audio
Ryan S.
la source
la source
<audio>
. Cet élément aura des crochets JS appropriés pour 'jouer', 'pause', etc ...Réponses:
Si vous ne voulez pas jouer avec les éléments HTML:
Afficher l'extrait de code
Cela utilise l'
HTMLAudioElement
interface, qui lit l'audio de la même manière que l'<audio>
élément .Si vous avez besoin de plus de fonctionnalités, j'ai utilisé la bibliothèque howler.js et je l' ai trouvée simple et utile.
Afficher l'extrait de code
la source
<audio>
. Wikipedia a une table de compatibilité de format audio .new Audio()
peut lire des fichiers WAV dans tous les navigateurs sauf Internet Explorer.C'est simple, récupérez simplement votre
audio
élément et appelez laplay()
méthode:Découvrez cet exemple: http://www.storiesinflight.com/html5/audio.html
Ce site révèle quelques - unes des autres choses cool que vous pouvez faire, comme
load()
,pause()
et quelques autres propriétés de l'audio
élément.la source
http://www.schillmania.com/projects/soundmanager2/
SoundManager 2 fournit une API facile à utiliser qui permet de lire le son dans n'importe quel navigateur moderne, y compris IE 6+. Si le navigateur ne prend pas en charge HTML5, il obtient de l'aide de Flash. Si vous voulez strictement HTML5 et pas de flash, il existe un paramètre pour cela,
preferFlash=false
Il prend en charge 100% audio sans Flash sur iPad, iPhone (iOS4) et autres appareils + navigateurs compatibles HTML5
L'utilisation est aussi simple que:
En voici une démonstration en action: http://www.schillmania.com/projects/soundmanager2/demo/christmas-lights/
la source
C'est une question assez ancienne mais je veux ajouter quelques informations utiles. Le sujet a indiqué qu'il est
"making a game"
. Donc, pour tous ceux qui ont besoin d'audio pour le développement de jeux, il y a un meilleur choix qu'un simple<audio>
tag ou unHTMLAudioElement
. Je pense que vous devriez envisager l'utilisation de l' API Web Audio :la source
Facile avec Jquery
// définir des balises audio sans précharge
// ajoute jquery à charger
// écrit des méthodes pour jouer et arrêter
// décide comment contrôler l'audio
ÉDITER
Pour répondre à la question de @ stomy, voici comment utiliser cette approche pour lire une playlist :
Placez vos chansons dans un objet:
Utilisez les fonctions de déclenchement et de lecture comme précédemment:
Chargez la première chanson dynamiquement:
Réinitialisez la source audio sur la chanson suivante de la liste de lecture, à la fin de la chanson en cours:
Voir ici pour un exemple de ce code en action.
la source
ended
événement à émettre et démarrer le prochain fichier audio dans la liste (probablement vous gardez une trace soit dans le DOM, la mémoire JS, etc. ). developer.mozilla.org/en-US/docs/Web/Events/endedAjoutez un son caché et lisez-le.
la source
Si vous obtenez l'erreur suivante:
Cela signifie que l'utilisateur doit d'abord interagir avec le site Web (comme l'indique le message d'erreur). Dans ce cas, vous devez utiliser
click
ou simplement un autre écouteur d'événements, afin que l'utilisateur puisse interagir avec votre site Web.Si vous souhaitez charger automatiquement l'audio et que vous ne voulez pas que l'utilisateur interagisse d'abord avec le document, vous pouvez utiliser
setTimeout
.Le son commencera après 0,5 seconde.
la source
la source
la source
Solution assez simple si vous avez une balise HTML comme ci-dessous:
Utilisez simplement JavaScript pour le jouer, comme ceci:
la source
J'ai eu quelques problèmes liés aux retours d' objets de promesse audio et certains problèmes liés à l'interaction de l'utilisateur avec les sons, je finis par utiliser ce petit objet,
Je recommanderais d'implémenter les sons de jeu les plus proches de l'événement d'interaction utilisé par l'utilisateur.
Et implémentez-le comme suit:
la source
J'ai utilisé cette méthode pour jouer un son ...
la source
si vous voulez lire votre audio chaque fois que la page est ouverte, faites comme ça.
et appelez cette playMusic () chaque fois que vous en avez besoin dans votre code de jeu.
la source
Avec les exigences de sécurité qu'un utilisateur doit interagir avec une page Web pour que l'audio soit autorisé, voici comment je le fais, basé sur la lecture de nombreux articles, y compris sur ce site
Étant donné que tous les fichiers audio ont été "lus" sur le même OnClick, vous pouvez désormais les lire à tout moment dans le jeu sans restrictions.
Notez que pour une meilleure compatibilité n'utilisez pas de fichiers wav, MS ne les prend pas en charge
Utilisez mp3 et ogg, qui couvre tous les appareils
Exemple:
répéter au besoin pour tous les fichiers audio du jeu
Alors:
répéter au besoin, sauf ne pas mettre en pause l'audio que vous souhaitez entendre lorsque le jeu démarre
la source
Vous pouvez utiliser l'API Web Audio pour jouer des sons. Il existe de nombreuses bibliothèques audio comme howler.js, soundjs etc. Si vous ne vous inquiétez pas des anciens navigateurs, vous pouvez également consulter http://musquitojs.com/ . Il fournit une API simple pour créer et jouer des sons.
Par exemple, pour jouer un son, tout ce que vous avez à faire est.
La bibliothèque prend également en charge les Sprites audio.
la source
Il s'agit de JS avec un projet de bébé AI avec lequel je travaille. j'espère que cela peut vous aider.
la source
Utilisez simplement ceci:
Ou, pour simplifier:
Échantillon:
la source
J'ai eu quelques problèmes avec la lecture audio, d'autant plus que Chrome a mis à jour que l'utilisateur doit d'abord interagir avec le document.
Cependant, dans presque toutes les solutions que j'ai trouvées, le code JS doit configurer activement les écouteurs (par exemple, les clics sur les boutons) pour recevoir les événements utilisateur afin de lire l'audio.
Dans mon cas, je voulais juste que mon jeu joue au BGM dès que le joueur interagit avec lui, alors je me suis fait un simple écouteur qui vérifie constamment si la page Web est en interaction ou non.
la source
Voici une solution pour l'année 2020 lorsque vous voyez l'erreur:
Ne soyez pas habile et pensez ooh c'est une vieille école
oclick
, je vais juste le déplacer en bas de la page vers mon jQuery ou mon fichier JavaScript externe. Nan. Ce doit être unonclick
.la source