আমি প্রোগ্রাম গেমগুলিতে এইচটিএমএল 5 ব্যবহার করছি; আমি এখন যে বাধা ফেলেছি তা হ'ল কীভাবে সাউন্ড ইফেক্টগুলি খেলতে হয় play
নির্দিষ্ট প্রয়োজনীয়তা সংখ্যায় কম:
- একাধিক শব্দ প্লে এবং মিশ্রিত করুন,
- একই নমুনাটি একাধিক বার খেলুন, সম্ভবত প্লেব্যাকগুলি ওভারল্যাপ করে,
- কোনও বিন্দুতে কোনও নমুনার বাধা প্লেব্যাক,
- সাধারণত (নিম্নমানের) কাঁচা পিসিএমযুক্ত ডাব্লুএইভি ফাইলগুলি খেলুন তবে আমি অবশ্যই এটি রূপান্তর করতে পারি।
আমার প্রথম পদ্ধতিরটি ছিল HTML5 <audio>
উপাদানটি ব্যবহার করা এবং আমার পৃষ্ঠায় সমস্ত শব্দ প্রভাব সংজ্ঞায়িত করা। ফায়ারফক্স ডাব্লুএইভি ফাইলগুলি কেবল পীচি বাজায়, তবে #play
একাধিকবার কল করা সত্যিই একাধিকবার নমুনাটি খেলবে না। এইচটিএমএল 5 অনুধাবন সম্পর্কে আমার ধারণা থেকে, <audio>
উপাদানটি প্লেব্যাকের স্থিতিও ট্র্যাক করে, যাতে এটি কেন ব্যাখ্যা করে।
আমার তাত্ক্ষণিক চিন্তাটি অডিও উপাদানগুলির ক্লোন করা ছিল, সুতরাং আমি এটি করার জন্য নীচের ক্ষুদ্র জাভাস্ক্রিপ্ট লাইব্রেরি তৈরি করেছি (jQuery এর উপর নির্ভর করে):
var Snd = {
init: function() {
$("audio").each(function() {
var src = this.getAttribute('src');
if (src.substring(0, 4) !== "snd/") { return; }
// Cut out the basename (strip directory and extension)
var name = src.substring(4, src.length - 4);
// Create the helper function, which clones the audio object and plays it
var Constructor = function() {};
Constructor.prototype = this;
Snd[name] = function() {
var clone = new Constructor();
clone.play();
// Return the cloned element, so the caller can interrupt the sound effect
return clone;
};
});
}
};
সুতরাং এখন আমি Snd.boom();
ফায়ারব্যাগ কনসোল থেকে খেলতে পারি এবং খেলতে পারি snd/boom.wav
, তবে আমি এখনও একই নমুনা একাধিক বার খেলতে পারি না। দেখে মনে হচ্ছে যে <audio>
উপাদানটি সাউন্ড ইফেক্টগুলি প্লে করার পরিবর্তে কিছু স্ট্রিমিং বৈশিষ্ট্যযুক্ত।
আমি অনুপস্থিত, এটি কেবলমাত্র এইচটিএমএল 5 এবং জাভাস্ক্রিপ্ট ব্যবহার করে এমনটি করার কোনও চতুর উপায় আছে?
আমার এটিও উল্লেখ করা উচিত, আমার পরীক্ষার পরিবেশটি উবুন্টু 9.10-তে ফায়ারফক্স 3.5। অন্যান্য ব্রাউজারগুলি আমি চেষ্টা করেছি - অপেরা, মিডোরি, ক্রোমিয়াম, এপিফেনি - বিভিন্ন ফলাফল তৈরি করে। কিছু কিছু খেলেন না, এবং কিছু ব্যতিক্রম ছুঁড়ে ফেলে।