আমি এইচটিএমএল 5 এবং জাভাস্ক্রিপ্ট দিয়ে একটি গেম তৈরি করছি।
আমি জাভাস্ক্রিপ্টের মাধ্যমে গেম অডিও কীভাবে খেলতে পারি?
আমি এইচটিএমএল 5 এবং জাভাস্ক্রিপ্ট দিয়ে একটি গেম তৈরি করছি।
আমি জাভাস্ক্রিপ্টের মাধ্যমে গেম অডিও কীভাবে খেলতে পারি?
উত্তর:
আপনি যদি এইচটিএমএল উপাদানগুলির সাথে ঝামেলা করতে না চান:
var audio = new Audio('audio_file.mp3');
audio.play();
এটি HTMLAudioElement
ইন্টারফেস ব্যবহার করে , যা <audio>
উপাদানটির মতো অডিও চালায় ।
আপনার যদি আরও কার্যকারিতা প্রয়োজন হয় তবে আমি howler.js গ্রন্থাগারটি ব্যবহার করেছি এবং এটি সহজ এবং দরকারী বলে মনে করেছি।
<audio>
। উইকিপিডিয়ায় একটি অডিও বিন্যাসের সামঞ্জস্যতা টেবিল রয়েছে । new Audio()
ইন্টারনেট এক্সপ্লোরার ব্যতীত সমস্ত ব্রাউজারে ডাব্লুএইভি ফাইল খেলতে পারে।
এটি সহজ, কেবল আপনার audio
উপাদানটি পান এবং play()
পদ্ধতিটি কল করুন :
document.getElementById('yourAudioTag').play();
এই উদাহরণটি দেখুন: http://www.storiesinflight.com/html5/audio.html
এই সাইটটি অন্যান্য শীতল জিনিস আপনি যেমন করতে পারেন তা uncovers load()
, pause()
, এবং কয়েক অন্যান্য বৈশিষ্ট্য audio
উপাদান।
http://www.schillmania.com/projects/soundmanager2/
সাউন্ডম্যানেজার 2 এপিআই ব্যবহারের সহজ উপায় সরবরাহ করে যা IE 6+ সহ যে কোনও আধুনিক ব্রাউজারে শব্দটি চালানোর অনুমতি দেয়। যদি ব্রাউজার HTML5 সমর্থন করে না, তবে এটি ফ্ল্যাশ থেকে সহায়তা পায়। আপনি যদি এইচটিএমএল 5 এবং কোনও ফ্ল্যাশ চান না তবে তার জন্য একটি সেটিংস রয়েছে,preferFlash=false
এটি আইপ্যাড, আইফোন (আইওএস 4) এবং অন্যান্য এইচটিএমএল 5-সক্ষম ডিভাইস + ব্রাউজারগুলিতে 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
। আমি মনে করি আপনার ওয়েব অডিও API এর ব্যবহার বিবেচনা করা উচিত :
ওয়েবে অডিওতে এখন আর প্লাগইন দরকার নেই, অডিও ট্যাগটি পরিশীলিত গেমস এবং ইন্টারেক্টিভ অ্যাপ্লিকেশনগুলি প্রয়োগের জন্য উল্লেখযোগ্য সীমাবদ্ধতা নিয়ে আসে। ওয়েব অডিও এপিআই হ'ল ওয়েব অ্যাপ্লিকেশনগুলিতে অডিও প্রক্রিয়াকরণ এবং সংশ্লেষণের জন্য একটি উচ্চ-স্তরের জাভাস্ক্রিপ্ট এপিআই। এই এপিআই এর লক্ষ্য হ'ল আধুনিক গেম অডিও ইঞ্জিনগুলিতে পাওয়া দক্ষতা এবং আধুনিক ডেস্কটপ অডিও উত্পাদন অ্যাপ্লিকেশনগুলিতে পাওয়া কিছু মিশ্রণ, প্রক্রিয়াকরণ এবং ফিল্টারিংয়ের কাজগুলিকে অন্তর্ভুক্ত করা।
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
ইভেন্টটি নির্গত হওয়ার জন্য শুনতে পারেন এবং তালিকার পরবর্তী অডিও ফাইলটি শুরু করতে পারেন (সম্ভবত আপনি ডোম, জেএস মেমরি ইত্যাদিতে ট্র্যাক রাখছেন ইত্যাদি) )। বিকাশকারী.মোজিলা.আর.ইন-
একটি লুকানো অডিও যুক্ত করুন এবং এটি প্লে করুন।
function playSound(url){
var audio = document.createElement('audio');
audio.style.display = "none";
audio.src = url;
audio.autoplay = true;
audio.onended = function(){
audio.remove() //Remove when played.
};
document.body.appendChild(audio);
}
আপনি যদি নিম্নলিখিত ত্রুটিটি পেয়ে থাকেন:
অপ্রকাশিত (প্রতিশ্রুতিতে) ডমেক্সেক্সেপশন: প্লে () ব্যর্থ হয়েছে কারণ ব্যবহারকারী প্রথমে নথির সাথে ইন্টারঅ্যাক্ট করেননি।
এর অর্থ ব্যবহারকারীকে প্রথমে ওয়েবসাইটের সাথে যোগাযোগ করতে হবে (ত্রুটির বার্তাটি যেমন বলে) এই ক্ষেত্রে আপনাকে 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();
আপনি যখনই পৃষ্ঠাটি খোলার সময় অডিওটি চালাতে চান তবে এটি করুন।
<script>
function playMusic(){
music.play();
}
</script>
<html>
<audio id="music" loop src="sounds/music.wav" autoplay> </audio>
</html>
এবং যখনই আপনার গেম কোডের প্রয়োজন হয় তখন এই প্লে মিউজিক () কল করুন।
সুরক্ষার প্রয়োজনীয়তার সাথে যে কোনও ব্যবহারকারীকে অডিওর অনুমোদিত হওয়ার জন্য একটি ওয়েবপৃষ্ঠার সাথে ইন্টারঅ্যাক্ট করতে হবে এটি এই সাইট সহ অনেক নিবন্ধ পড়ার উপর ভিত্তি করে আমি এইভাবেই করব I
যেহেতু সমস্ত অডিও ফাইল একই অনক্লিকটিতে "প্লে" হয়ে গেছে, আপনি এখন কোনও বিধিনিষেধ ছাড়াই খেলায় খেলতে পারবেন
নোট করুন যে সর্বোত্তম সংযোগের জন্য ওয়াভ ফাইলগুলি ব্যবহার করবেন না, এমএস তাদের সমর্থন করে না
এমপি 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();
গেমটি শুরু হওয়ার পরে আপনি যে অডিও শুনতে চান তা থামান না বাদে প্রয়োজন অনুসারে পুনরাবৃত্তি করুন
শব্দ বাজানোর জন্য আপনি ওয়েব অডিও এপিআই ব্যবহার করতে পারেন। সেখানে বেশ কিছু অডিও লাইব্রেরি সেখানে 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>
এটি ক্রোম than৩ ব্যতীত অন্য ব্রাউজারগুলিতে কাজ করে তবে কোনও আইডিইএ রাখবেন না !!
অডিও বাজানো নিয়ে আমার কিছু সমস্যা ছিল, বিশেষত যেহেতু ক্রোম আপডেট করেছে যে ব্যবহারকারীকে প্রথমে নথির সাথে ইন্টারঅ্যাক্ট করতে হবে।
যাইহোক, প্রায় সব সমাধানের মধ্যে আমি খুঁজে পেয়েছি যে জেএস কোডটি অডিওটি চালানোর জন্য ব্যবহারকারী ইভেন্টগুলি গ্রহণ করতে শ্রোতাদের (যেমন বাটন ক্লিকগুলি) সক্রিয়ভাবে সেট করতে হবে।
আমার ক্ষেত্রে আমি খেলোয়াড়ের সাথে যোগাযোগের সাথে সাথেই আমার গেমটি বিজিএম খেলতে চেয়েছিলাম, তাই আমি নিজেকে একটি সাধারণ শ্রোতা বানিয়েছি যা ওয়েব পৃষ্ঠায় ইন্টারেক্ট হচ্ছে কিনা তা যাচাই করে চলে।
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 সালের জন্য এখানে একটি সমাধান রয়েছে:
[ত্রুটি] আনহানডেল প্রতিশ্রুতি প্রত্যাখ্যান: নয় সমর্থিত ত্রুটি: ক্রিয়াকলাপটি সমর্থিত নয়। (বেনামে ফাংশন) প্রত্যাখ্যানপ্রসেস প্লে (বেনামে ফাংশন) (টেস্টাওডিয়ো এইচটিএমএল: 96) প্রেরণ (jquery-3.4.1.min.js: 2: 42577)
<div onclick="new Audio('/assets/test.mp3').play()">aaa</div>
স্লিট হয়ে ভাববেন না ও ও এটি একটি পুরাতন স্কুল oclick
, আমি কেবল পৃষ্ঠাটি আমার jQuery বা আমার বাহ্যিক জাভাস্ক্রিপ্ট ফাইলটিতে সরিয়ে দেব। নাঃ। এটি একটি হতে হবে onclick
।
<audio>
। সেই উপাদানটিতে 'প্লে', 'বিরতি' ইত্যাদি ইত্যাদির জন্য উপযুক্ত জেএস হুক থাকবে ...