function SoundBox() { this.sounds = {}; this.sound_callbacks = {}; this.load = function(sound_name, path) { this.sounds[sound_name] = new Audio(path); // reset the sound ready for the next playing this.sounds[sound_name].addEventListener("ended", (function(event) { event.target.currentTime = 0; if(typeof this.sound_callbacks[sound_name] == "function") { this.sound_callbacks[sound_name](sound_name); delete this.sound_callbacks[sound_name]; } }).bind(this)); }; this.remove = function(sound_name) { if(typeof this.sounds != "undefined") delete this.sounds[sound_name]; if(typeof this.sound_callbacks == "function") delete this.sound_callbacks[sound_name]; }; this.play = function(sound_name, callback) { if(typeof this.sounds[sound_name] == "undefined") { console.error("Can't find sound called '" + sound_name + "'."); return false; } if(typeof callback == "function") this.sound_callbacks[sound_name] = callback; this.sounds[sound_name].play(); }; }