Saya membuat game dengan HTML5 dan Javascript.
Bagaimana saya bisa memainkan audio game melalui Javascript?
javascript
html
html5-audio
Ryan S.
sumber
sumber
<audio>
. Elemen itu akan memiliki kait JS yang sesuai untuk 'bermain', 'jeda', dll ...Jawaban:
Jika Anda tidak ingin dipusingkan dengan elemen HTML:
Tampilkan cuplikan kode
Ini menggunakan
HTMLAudioElement
antarmuka, yang memutar audio dengan cara yang sama seperti<audio>
elemen .Jika Anda membutuhkan lebih banyak fungsi, saya menggunakan perpustakaan howler.js dan merasa sederhana dan bermanfaat.
Tampilkan cuplikan kode
sumber
<audio>
. Wikipedia memiliki tabel kompatibilitas format audio .new Audio()
dapat memutar file WAV di semua browser kecuali Internet Explorer.Sangat mudah, dapatkan
audio
elemen Anda dan panggilplay()
metode:Lihatlah contoh ini: http://www.storiesinflight.com/html5/audio.html
Situs ini mengungkapkan beberapa hal menarik lainnya yang dapat Anda lakukan seperti
load()
,pause()
, dan beberapa properti lain dariaudio
elemen.sumber
http://www.schillmania.com/projects/soundmanager2/
SoundManager 2 menyediakan API yang mudah digunakan yang memungkinkan suara dimainkan di browser modern apa pun, termasuk IE 6+. Jika browser tidak mendukung HTML5, maka itu mendapat bantuan dari flash. Jika Anda ingin HTML5 ketat dan tidak ada flash, ada pengaturan untuk itu,
preferFlash=false
Ini mendukung 100% audio bebas Flash di iPad, iPhone (iOS4) dan perangkat + browser yang mendukung HTML5 lainnya
Penggunaannya sesederhana:
Berikut ini adalah demo dalam aksi: http://www.schillmania.com/projects/soundmanager2/demo/christmas-lights/
sumber
Ini adalah pertanyaan yang cukup lama tetapi saya ingin menambahkan beberapa info berguna. Pemula topik telah menyebutkan bahwa dia
"making a game"
. Jadi untuk semua orang yang membutuhkan audio untuk pengembangan game ada pilihan yang lebih baik daripada hanya<audio>
tag atauHTMLAudioElement
. Saya pikir Anda harus mempertimbangkan penggunaan API Audio Web :sumber
Mudah dengan Jquery
// atur tag audio tanpa preload
// tambahkan jquery untuk dimuat
// tulis metode untuk bermain dan berhenti
// putuskan cara mengontrol audio
EDIT
Untuk menjawab pertanyaan @ stomy, berikut adalah bagaimana Anda akan menggunakan pendekatan ini untuk memainkan daftar putar :
Setel lagu Anda di objek:
Gunakan fungsi pemicu dan putar seperti sebelumnya:
Muat lagu pertama secara dinamis:
Setel ulang sumber audio ke lagu berikutnya dalam daftar putar, ketika lagu saat ini berakhir:
Lihat di sini untuk contoh kode ini dalam aksi.
sumber
ended
acara yang akan dipancarkan dan memulai file audio berikutnya dalam daftar (mungkin Anda melacak baik di DOM, memori JS, dll. ). developer.mozilla.org/en-US/docs/Web/Events/endedTambahkan audio tersembunyi dan mainkan.
sumber
Jika Anda mendapatkan kesalahan berikut:
Itu berarti pengguna harus berinteraksi dengan situs web terlebih dahulu (seperti pesan kesalahan). Dalam hal ini Anda perlu menggunakan
click
atau hanya pendengar acara lain, sehingga pengguna dapat berinteraksi dengan situs web Anda.Jika Anda ingin memuat audio secara otomatis dan tidak ingin pengguna berinteraksi dengan dokumen terlebih dahulu, Anda dapat menggunakannya
setTimeout
.Suara akan mulai setelah 0,5 detik.
sumber
sumber
sumber
Solusi yang cukup sederhana jika Anda memiliki tag HTML seperti di bawah ini:
Cukup gunakan JavaScript untuk memainkannya, seperti:
sumber
Saya memiliki beberapa masalah yang berkaitan dengan pengembalian objek janji audio dan beberapa masalah yang berkaitan dengan interaksi pengguna dengan suara yang akhirnya saya gunakan objek kecil ini,
Saya akan merekomendasikan untuk mengimplementasikan suara yang paling dekat dengan interaksi yang digunakan oleh pengguna.
Dan implementasikan sebagai berikut:
sumber
Saya menggunakan metode ini untuk memainkan suara ...
sumber
jika Anda ingin memutar audio Anda setiap kali halaman dibuka maka lakukan seperti ini.
dan panggil playMusic ini () kapan pun Anda butuhkan dalam kode game Anda.
sumber
Dengan persyaratan keamanan bahwa pengguna harus berinteraksi dengan laman web agar audio diizinkan, beginilah cara saya melakukannya, berdasarkan pada membaca banyak artikel, termasuk di situs ini
Karena semua file audio telah "diputar" di OnClick yang sama, kini Anda dapat memutarnya kapan saja di game tanpa batasan
Perhatikan bahwa untuk kompatibilitas terbaik tidak menggunakan file wav, MS tidak mendukungnya
Gunakan mp3 dan ogg, yang mencakup semua perangkat
Contoh:
ulangi sesuai kebutuhan untuk semua audio dalam game
Kemudian:
ulangi sesuai kebutuhan kecuali jangan menghentikan audio yang ingin Anda dengar saat permainan dimulai
sumber
Anda dapat menggunakan API Audio Web untuk memainkan suara. Ada beberapa perpustakaan audio di luar sana seperti howler.js, soundjs dll. Jika Anda tidak khawatir tentang browser lama maka Anda juga dapat memeriksa http://musquitojs.com/ . Ini menyediakan API sederhana untuk membuat dan memutar suara.
Misalnya, memainkan suara yang harus Anda lakukan adalah.
Perpustakaan juga mendukung Audio Sprite.
sumber
Ini adalah beberapa JS yang saya buat dengan proyek bayi AI yang sedang saya kerjakan. Saya harap ini bisa membantu Anda.
sumber
Gunakan ini saja:
Atau, untuk membuatnya lebih sederhana:
Sampel:
sumber
Saya memiliki beberapa masalah dengan memutar audio, terutama karena Chrome telah memperbarui bahwa pengguna harus berinteraksi dengan dokumen terlebih dahulu.
Namun, di hampir semua solusi yang saya temukan adalah bahwa kode JS harus secara aktif mengatur pendengar (mis. Klik tombol) untuk menerima acara pengguna untuk memutar audio.
Dalam kasus saya, saya hanya ingin permainan saya untuk bermain BGM segera setelah pemain berinteraksi dengannya, jadi saya membuat diri saya menjadi pendengar sederhana yang terus memeriksa apakah halaman web sedang berinteraksi atau tidak.
sumber
Ini adalah solusi untuk tahun 2020 ketika Anda melihat kesalahan:
Jangan licin dan berpikir ooh itu sekolah tua
oclick
, saya hanya akan memindahkannya ke halaman jQuery saya atau file JavaScript eksternal saya. Nggak. Perlu menjadionclick
.sumber