Untitled
By: a guest | Aug 6th, 2010 | Syntax:
JavaScript | Size: 1.42 KB | Hits: 338 | Expires: Never
avar LibCanvasAudio = function (file) {
this.audio = new Audio;
this.src(file);
};
LibCanvasAudio.prototype = {
src : function (file) {
var codec = this.getSupport();
if (!codec) throw 'AudioNotSupported';
this.audio.src = file.replace(/\*/g, this.getSupport());
log('using ' + codec);
this.audio.load();
return this;
},
getSupport : function () {
return !this.audio.canPlayType ? false :
this.audio.canPlayType('audio/ogg;') ? 'ogg' :
this.audio.canPlayType('audio/mpeg;') ? 'mp3' : false;
},
cloneAudio : function () {
if (window.opera) { // Reported Opera bug DSK-309302
var audioClone = new Audio;
audioClone.src = this.audio.src;
} else {
audioClone = this.audio.cloneNode(true);
}
audioClone.load();
return audioClone;
},
gatling : function (count) {
this.barrels = [];
this.gatIndex = 0;
while (count--) {
this.barrels.push(this.cloneAudio());
}
return this;
},
getNext : function () {
var elem = this.barrels[this.gatIndex];
++this.gatIndex >= this.barrels.length && (this.gatIndex = 0);
return elem;
},
playNext : function () {
var elem = this.getNext();
elem.pause();
// firefox 3.5 starting audio bug
elem.currentTime = 0.025;
elem.play();
return this;
}
};
var shotSound = new LibCanvasAudio('explosion.*').gatling(6);
window.addEventListener('keydown', function (e) {
shotSound.playNext();
}, false);