Advertisement
Guest User

Untitled

a guest
Aug 6th, 2010
1,450
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. avar LibCanvasAudio = function (file) {
  2.     this.audio = new Audio;
  3.     this.src(file);
  4. };
  5.  
  6. LibCanvasAudio.prototype = {
  7.     src : function (file) {
  8.         var codec = this.getSupport();
  9.         if (!codec) throw 'AudioNotSupported';
  10.         this.audio.src = file.replace(/\*/g, this.getSupport());
  11.         log('using ' + codec);
  12.         this.audio.load();
  13.         return this;
  14.     },
  15.     getSupport : function () {
  16.         return !this.audio.canPlayType ? false :
  17.             this.audio.canPlayType('audio/ogg;')  ? 'ogg' :
  18.             this.audio.canPlayType('audio/mpeg;') ? 'mp3' : false;
  19.     },
  20.     cloneAudio : function () {
  21.         if (window.opera) { // Reported Opera bug DSK-309302
  22.             var audioClone = new Audio;
  23.             audioClone.src = this.audio.src;
  24.         } else {
  25.             audioClone = this.audio.cloneNode(true);
  26.         }
  27.         audioClone.load();
  28.         return audioClone;
  29.     },
  30.     gatling : function (count) {
  31.         this.barrels = [];
  32.         this.gatIndex =  0;
  33.         while (count--) {
  34.             this.barrels.push(this.cloneAudio());
  35.         }
  36.         return this;
  37.     },
  38.     getNext : function () {
  39.         var elem = this.barrels[this.gatIndex];
  40.         ++this.gatIndex >= this.barrels.length && (this.gatIndex = 0);
  41.         return elem;
  42.     },
  43.     playNext : function () {
  44.         var elem = this.getNext();
  45.         elem.pause();
  46.         // firefox 3.5 starting audio bug
  47.         elem.currentTime = 0.025;
  48.         elem.play();
  49.         return this;
  50.     }
  51. };
  52.  
  53. var shotSound = new LibCanvasAudio('explosion.*').gatling(6);
  54.  
  55. window.addEventListener('keydown', function (e) {
  56.     shotSound.playNext();
  57. }, false);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement