Skip to content

Instantly share code, notes, and snippets.

@jwagner
Created January 13, 2011 09:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jwagner/777645 to your computer and use it in GitHub Desktop.
Save jwagner/777645 to your computer and use it in GitHub Desktop.
some hacky audio code
(function(){
var audio = provides('audio');
audio.Sound = Class({
src: '',
position: null,
init: function(src, position){
this.src = src;
this.position = position;
}
});
audio.Player = Class({
init: function(world, loader) {
this.world = world;
this.loader = loader;
this.pool = {};
},
play: function(sound){
var audio,
pool = this.pool[sound.src];
if(!pool){
pool = this.pool[sound.src] = [this.loader.get(sound.src)];
}
for(var i = 0; i < pool.length; i++){
audio = pool[i];
if(audio.paused || audio.ended){
log('reusing audio ' + i);
audio.currentTime = 0;
audio.play();
return;
}
}
//audio.currentTime = 0.0;
audio = audio.cloneNode(true);
audio.play();
pool.push(audio);
log('creating audio' + pool.length);
},
tick: function(){
var sound, audio;
while(sound = this.world.sounds.pop()){
this.play(sound);
}
}
});
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment