मैं HTML5 और जावास्क्रिप्ट के साथ एक गेम बना रहा हूं।
मैं जावास्क्रिप्ट के माध्यम से गेम ऑडियो कैसे खेल सकता हूं?
मैं HTML5 और जावास्क्रिप्ट के साथ एक गेम बना रहा हूं।
मैं जावास्क्रिप्ट के माध्यम से गेम ऑडियो कैसे खेल सकता हूं?
जवाबों:
यदि आप HTML तत्वों के साथ गड़बड़ नहीं करना चाहते हैं:
var audio = new Audio('audio_file.mp3');
audio.play();
यह HTMLAudioElement
इंटरफ़ेस का उपयोग करता है, जो <audio>
तत्व के समान ऑडियो चलाता है ।
यदि आपको अधिक कार्यक्षमता की आवश्यकता है, तो मैंने howler.js लाइब्रेरी का उपयोग किया और इसे सरल और उपयोगी पाया।
<audio>
। विकिपीडिया में एक ऑडियो प्रारूप संगतता तालिका है । new Audio()
इंटरनेट एक्सप्लोरर को छोड़कर सभी ब्राउज़रों में WAV फ़ाइलें चला सकते हैं।
यह आसान है, बस अपना audio
तत्व प्राप्त करें और play()
विधि को कॉल करें :
document.getElementById('yourAudioTag').play();
इस उदाहरण को देखें: http://www.storiesinflight.com/html5/audio.html
इस साइट में अन्य चीज़ें हैं जो आप जैसे क्या कर सकते हैं में से कुछ का खुलासा load()
, pause()
और के कुछ अन्य संपत्तियों के audio
तत्व।
http://www.schillmania.com/projects/soundmanager2/
SoundManager 2 एपीआई का उपयोग करने के लिए एक आसान प्रदान करता है जो साउंड को IE 6+ सहित किसी भी आधुनिक ब्राउज़र में चलाने की अनुमति देता है। यदि ब्राउज़र HTML5 का समर्थन नहीं करता है, तो उसे फ्लैश की मदद मिलती है। यदि आप सख्ती से HTML5 चाहते हैं और कोई फ़्लैश नहीं है, तो उसके लिए एक सेटिंग है,preferFlash=false
यह iPad, iPhone (iOS4) और अन्य HTML5- सक्षम उपकरणों + ब्राउज़रों पर 100% फ्लैश-फ्री ऑडियो का समर्थन करता है
उपयोग के रूप में सरल है:
<script src="soundmanager2.js"></script>
<script>
// where to find flash SWFs, if needed...
soundManager.url = '/path/to/swf-files/';
soundManager.onready(function() {
soundManager.createSound({
id: 'mySound',
url: '/path/to/an.mp3'
});
// ...and play it
soundManager.play('mySound');
});
</script>
यहां एक्शन में इसका डेमो दिया गया है: http://www.schillmania.com/projects/soundmanager2/demo/christmas-lights/
यह एक बहुत पुराना सवाल है, लेकिन मैं कुछ उपयोगी जानकारी जोड़ना चाहता हूं। विषय स्टार्टर ने उल्लेख किया है कि वह है "making a game"
। तो खेल विकास के लिए ऑडियो की जरूरत वाले हर व्यक्ति के लिए सिर्फ एक <audio>
टैग या ए की तुलना में बेहतर विकल्प है HTMLAudioElement
। मुझे लगता है कि आपको वेब ऑडियो एपीआई के उपयोग पर विचार करना चाहिए :
जबकि वेब पर ऑडियो को अब एक प्लगइन की आवश्यकता नहीं है, ऑडियो टैग परिष्कृत खेल और इंटरैक्टिव अनुप्रयोगों को लागू करने के लिए महत्वपूर्ण सीमाएं लाता है। वेब ऑडियो एपीआई वेब अनुप्रयोगों में ऑडियो को संसाधित और संश्लेषित करने के लिए एक उच्च-स्तरीय जावास्क्रिप्ट एपीआई है। इस एपीआई का लक्ष्य आधुनिक गेम ऑडियो इंजनों में पाई जाने वाली क्षमताओं और कुछ मिश्रण, प्रसंस्करण और फ़िल्टरिंग कार्यों को शामिल करना है जो आधुनिक डेस्कटॉप ऑडियो उत्पादन अनुप्रयोगों में पाए जाते हैं।
Jquery के साथ आसान
// बिना किसी प्रीलोड वाले ऑडियो टैग सेट करें
<audio class="my_audio" controls preload="none">
<source src="audio/my_song.mp3" type="audio/mpeg">
<source src="audio/my_song.ogg" type="audio/ogg">
</audio>
// लोड करने के लिए jquery जोड़ें
$(".my_audio").trigger('load');
// खेलने और रोकने के तरीके लिखें
function play_audio(task) {
if(task == 'play'){
$(".my_audio").trigger('play');
}
if(task == 'stop'){
$(".my_audio").trigger('pause');
$(".my_audio").prop("currentTime",0);
}
}
// तय करें कि ऑडियो को कैसे नियंत्रित किया जाए
<button onclick="play_audio('play')">PLAY</button>
<button onclick="play_audio('stop')">STOP</button>
संपादित करें
@ पेट के सवाल को संबोधित करने के लिए, यहां बताया गया है कि आप इस दृष्टिकोण का उपयोग प्लेलिस्ट खेलने के लिए कैसे करेंगे :
एक वस्तु में अपने गाने सेट करें:
playlist = {
'song_1' : 'audio/splat.mp3',
'song_2' : 'audio/saw.mp3',
'song_3' : 'audio/marbles.mp3',
'song_4' : 'audio/seagulls.mp3',
'song_5' : 'audio/plane.mp3'
}
ट्रिगर का उपयोग करें और पहले की तरह कार्य करें:
$(".my_audio").trigger('load');
function play_audio(task) {
if(task == 'play'){
$(".my_audio").trigger('play');
}
if(task == 'stop'){
$(".my_audio").trigger('pause');
$(".my_audio").prop("currentTime",0);
}
}
पहले गीत को गतिशील रूप से लोड करें:
keys = Object.keys(playlist);
$('.my_audio').append("<source id='sound_src' src=" + playlist[keys[0]] + " type='audio/mpeg'>");
प्लेलिस्ट में अगले गीत के लिए ऑडियो स्रोत रीसेट करें, जब वर्तमान गीत समाप्त होता है:
count = 0;
$('.my_audio').on('ended', function() {
count++;
$("#sound_src").attr("src", playlist[keys[count]])[0];
$(".my_audio").trigger('load');
play_audio('play');
});
कार्रवाई में इस कोड के उदाहरण के लिए यहां देखें ।
ended
ईवेंट को उत्सर्जित करने के लिए सुन सकते हैं और सूची में अगली ऑडियो फ़ाइल शुरू कर सकते हैं (संभवतः आप डोम, जेएस मेमोरी, आदि में या तो ट्रैक कर रहे हैं) )। developer.mozilla.org/en-US/docs/Web/Events/ended
यदि आपको निम्न त्रुटि मिल रही है:
अनकैप्ड (वादा में) DOMException: play () विफल रहा क्योंकि उपयोगकर्ता ने पहले दस्तावेज़ के साथ बातचीत नहीं की थी।
इसका मतलब है कि उपयोगकर्ता को पहले वेबसाइट के साथ बातचीत करने की आवश्यकता है (जैसा कि त्रुटि संदेश कहता है)। इस मामले में आपको click
किसी अन्य ईवेंट श्रोता का उपयोग करने की आवश्यकता है , इसलिए उपयोगकर्ता आपकी वेबसाइट के साथ बातचीत कर सकता है।
यदि आप ऑडियो लोड करना चाहते हैं और उपयोगकर्ता को पहले दस्तावेज़ के साथ सहभागिता नहीं करनी है, तो आप उपयोग कर सकते हैं setTimeout
।
setTimeout(() => {
document.getElementById('mySound').play();
}, 500)
<audio id="mySound" src="sound.mp3"></audio>
0.5 सेकंड के बाद ध्वनि शुरू हो जाएगी।
new Audio('./file.mp3').play()
यदि आपके पास नीचे की तरह एक HTML टैग है तो बहुत ही सरल उपाय:
<audio id="myAudio" src="some_audio.mp3"></audio>
इसे खेलने के लिए जावास्क्रिप्ट का उपयोग करें, जैसे:
document.getElementById('myAudio').play();
मेरे पास ऑडियो वादा वस्तु से संबंधित कुछ मुद्दे थे रिटर्न और ध्वनियों के साथ उपयोगकर्ता इंटरैक्शन से जुड़े कुछ मुद्दे हैं जो मैं इस छोटी वस्तु का उपयोग करके समाप्त करता हूं,
मैं खेल को कार्यान्वित करने के लिए सुझाव दूंगा जो कि उपयोगकर्ता द्वारा उपयोग किए जा रहे इंटरैक्शन इवेंट के सबसे करीब लगता है।
var soundPlayer = {
audio: null,
muted: false,
playing: false,
_ppromis: null,
puse: function () {
this.audio.pause();
},
play: function (file) {
if (this.muted) {
return false;
}
if (!this.audio && this.playing === false) {
this.audio = new Audio(file);
this._ppromis = this.audio.play();
this.playing = true;
if (this._ppromis !== undefined) {
this._ppromis.then(function () {
soundPlayer.playing = false;
});
}
} else if (!this.playing) {
this.playing = true;
this.audio.src = file;
this._ppromis = soundPlayer.audio.play();
this._ppromis.then(function () {
soundPlayer.playing = false;
});
}
}
};
और इसे निम्नानुसार कार्यान्वित करें:
<button onclick="soundPlayer.play('https://interactive-examples.mdn.mozilla.net/media/examples/t-rex-roar.mp3');">Play</button>
मैंने इस पद्धति का उपयोग ध्वनि चलाने के लिए किया है ...
var audioElement;
if(!audioElement) {
audioElement = document.createElement('audio');
audioElement.innerHTML = '<source src="' + '/audio/sound.mp3'+ '" type="audio/mpeg" />'
}
audioElement.play();
सुरक्षा आवश्यकताओं के साथ जो उपयोगकर्ता को ऑडियो के लिए एक वेबपेज के साथ बातचीत करनी चाहिए, यह अनुमति दी जाती है कि इस साइट पर सहित कई लेखों को पढ़ने के आधार पर मैं इसे कैसे करूं।
क्योंकि सभी ऑडियो फाइलें एक ही ओनक्लिक पर "प्ले" की गई हैं, आप अब उन्हें गेम में बिना किसी प्रतिबंध के खेल सकते हैं
ध्यान दें कि सर्वोत्तम संगतता के लिए wav फ़ाइलों का उपयोग न करें, MS उनका समर्थन नहीं करता है
एमपी 3 और ओग का उपयोग करें, जो सभी उपकरणों को कवर करता है
उदाहरण:
<audio id="welcome">
<source src="URL/welcome.ogg" type="audio/ogg">
<source src="URL/welcome.mp3" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
खेल में सभी ऑडियो के लिए आवश्यकतानुसार दोहराएं
फिर:
document.getElementById("welcome").play();
document.getElementById("welcome").pause();
खेल शुरू होने पर आप जिस ऑडियो को सुनना चाहते हैं, उसे छोड़ कर आवश्यकतानुसार दोहराएं
अगर आप अपना ऑडियो खेलना चाहते हैं जब भी पेज खुलता है तो इस तरह से करें।
<script>
function playMusic(){
music.play();
}
</script>
<html>
<audio id="music" loop src="sounds/music.wav" autoplay> </audio>
</html>
और जब भी आपको अपने गेम कोड में इस playMusic () को कॉल करना हो।
ध्वनियों को बजाने के लिए आप वेब ऑडियो एपीआई का उपयोग कर सकते हैं। वहाँ कुछ ऑडियो लाइब्रेरी हैं जैसे कि howler.js, soundjs आदि। यदि आप पुराने ब्राउज़रों के बारे में चिंता नहीं करते हैं, तो आप http://musquitojs.com/ पर भी देख सकते हैं । यह लगता है बनाने और खेलने के लिए एक सरल एपीआई प्रदान करता है।
उदाहरण के लिए, एक ध्वनि खेलने के लिए आपको बस इतना करना है।
import $buzz from 'musquito';
const buzz = $buzz('gunfire.mp3');
buzz.play();
पुस्तकालय ऑडियो स्प्राइट्स का भी समर्थन करता है।
यह कुछ जेएस आई है जिसके साथ काम करने वाली बेबी एआई प्रोजेक्ट इम पर आया था। मुझे आशा है कि यह आपकी मदद करने में सक्षम है।
<!DOCTYPE html>
<html>
<head>
<title>
js prompt AI
</title>
<style>
#button {
border: 1px solid black;
border-radius: 10px;
font-size: 22px;
height:65px;
width:100px;
text-align: center;
line-height: 65px;
}
</style>
</head>
<body>
<audio id="myAudio" src="./how_are_you.m4a"></audio>
<p>To Interact with the AI please click the button</p>
<div id=button>click</div>
<script>
var button = document.getElementById("button");
function playBack() {
button.addEventListener("click", function (){
var talk = prompt("If you wish for the AI to respond type hi");
var myAudio = document.getElementById("myAudio");
if(talk === "hi") {
myAudio.play();
}
}) ;
}
playBack();
</script>
</body>
</html>
बस इस का उपयोग करें:
<video controls="" autoplay="" name="media"><source src="Sound URL Here" type="audio/mpeg" /></video>
या, इसे सरल बनाने के लिए:
<video controls="" autoplay="" name="media">
<source src="Sound URL Here" type="audio/mpeg" />
</video>
नमूना:
<video controls="" autoplay="" name="media">
<source src="https://interactive-examples.mdn.mozilla.net/media/examples/t-rex-roar.mp3" type="audio/mpeg">
</video>
अगर कोई Chrome 73 के अलावा अन्य ब्राउज़र पर काम करता है तो कोई IDEA न करें !!
मेरे पास ऑडियो चलाने के साथ कुछ समस्याएं थीं, खासकर जब से क्रोम ने अपडेट किया है कि उपयोगकर्ता को पहले दस्तावेज़ के साथ बातचीत करनी है।
हालाँकि, लगभग सभी समाधानों में मैंने पाया है कि ऑडियो को चलाने के लिए उपयोगकर्ता को प्राप्त करने के लिए JS कोड को सक्रिय रूप से श्रोताओं (जैसे बटन क्लिक) को सेट करना पड़ता है।
मेरे मामले में, मैं बस चाहता था कि मेरा गेम बीजीएम के रूप में जल्द ही खिलाड़ी के साथ बातचीत करे, इसलिए मैंने खुद को एक साधारण श्रोता बनाया जो यह जांचता रहता है कि वेब पेज इंटरेक्ट हो रहा है या नहीं।
const stopAttempt = setInterval(() => {
const audio = new Audio('your_audio_url_or_file_name.mp3');
const playPromise = audio.play();
if (playPromise) {
playPromise.then(() => {
clearInterval(stopAttempt)
}).catch(e=>{
console.log('' + e);
})
}
}, 100 )
यहाँ वर्ष 2020 के लिए एक समाधान है जब आप त्रुटि देख रहे हैं:
[त्रुटि] अनहेल्दी प्रॉमिस रिजेक्शन: NotSupportedError: ऑपरेशन समर्थित नहीं है। (अनाम फ़ंक्शन) अस्वीकार करें प्ले (अनाम फ़ंक्शन) (testaudio.html: 96) प्रेषण (jquery-3.4.1.min.js: 2: 42577)
<div onclick="new Audio('/assets/test.mp3').play()">aaa</div>
स्लीक मत बनो और ऊह सोचो कि यह एक पुराना स्कूल है oclick
, मैं बस उस पेज को अपने jQuery या मेरी बाहरी जावास्क्रिप्ट फ़ाइल पर ले जाऊंगा। नहीं। यह एक होने की जरूरत है onclick
।
<audio>
। उस तत्व में 'प्ले', 'पॉज' आदि के लिए उपयुक्त जेएस हुक होंगे ...