Sound gestion improved

This commit is contained in:
Clement Gournay 2015-07-18 11:57:56 +09:00
parent b92d91c01c
commit c1985ddefc
6 changed files with 50 additions and 58 deletions

View File

@ -44,6 +44,8 @@ var assets = {
fonts: new Array( fonts: new Array(
'Kozuka', 'Kozuka',
'TnT' 'TnT'
) ),
sounds: {}
}; };

View File

@ -24,11 +24,13 @@ function Loader(){
assets.audio.forEach(function(name){ assets.audio.forEach(function(name){
var id = name.substr(0, name.length-4); var id = name.substr(0, name.length-4);
var audio = $("<audio id='"+id+"' src='/assets/audio/"+name+"' />"); var audio = new Audio();
audio.appendTo("#assets"); audio.src = '/assets/audio/'+name;
audio.on('canplay', function(){ audio.load();
audio.onloadeddata = function(){
assets.sounds[id] = audio;
_this.assetLoaded(); _this.assetLoaded();
}); };
}); });
$.ajax({ $.ajax({

View File

@ -10,19 +10,23 @@ function loadSong(selectedSong){
this.run = function(){ this.run = function(){
document.getElementById("start").play(); //assets.sounds["start"]["audio"][0].play();
$("#assets").append("<audio id='main-music' src='/songs/"+_selectedSong.folder+"/"+_selectedSong.title+".mp3'></audio>");
$("#assets").append("<img id='music-bg' src='/songs/"+_selectedSong.folder+"/bg.png' />"); $("#assets").append("<img id='music-bg' src='/songs/"+_selectedSong.folder+"/bg.png' />");
var audio = new Audio();
audio.src = '/songs/'+_selectedSong.folder+'/'+_selectedSong.title+'.mp3';
audio.load();
$("#music-bg").load(function(){ $("#music-bg").load(function(){
_bgLoaded=true; _bgLoaded=true;
_this.checkIfEverythingLoaded(); _this.checkIfEverythingLoaded();
}); });
$("#main-music").on('canplay', function(){ audio.onloadeddata = function(){
_musicLoaded=true; _musicLoaded=true;
assets.sounds["main-music"]=audio;
_this.checkIfEverythingLoaded(); _this.checkIfEverythingLoaded();
}); };
$.ajax({ $.ajax({
url : _songFilePath, url : _songFilePath,

View File

@ -38,7 +38,7 @@ function SongSelect(){
}); });
$(".song:not(.opened)").click(function(){ $(".song:not(.opened)").click(function(){
document.getElementById("don").play(); //assets.sounds["ka"][0].play();
$(".difficulty").hide(); $(".difficulty").hide();
$(".opened").removeClass("opened", 300); $(".opened").removeClass("opened", 300);
$(this).addClass("opened", 300, "linear", function(){ $(this).addClass("opened", 300, "linear", function(){
@ -61,9 +61,9 @@ function SongSelect(){
songDifficulties.sort(function(a, b){ songDifficulties.sort(function(a, b){
if(a.difficulty < b.difficulty) if(a.difficulty < b.difficulty)
return -1;
if(a.difficulty > b.difficulty)
return 1; return 1;
if(a.difficulty > b.difficulty)
return -1;
return 0; return 0;
}); });

View File

@ -5,59 +5,43 @@ function soundSystem(controller){
var _circles = []; var _circles = [];
var _circleID = -1; var _circleID = -1;
var _measures = []; var _measures = [];
var _channel_max = 10;// number of channels var _sounds = assets.sounds;
var _mainMusicChannel=-1; var _channels=[];
var _channelMAX=20;
var _audiochannels = new Array(); for (var i=0;i<_channelMAX;i++) {// prepare the channels
_channels[i] = {};
for (var a=0;a<_channel_max;a++) {// prepare the channels _channels[i]["end"] = -1;
_audiochannels[a] = new Array(); _channels[i]["audio"] = new Audio();
_audiochannels[a]['channel'] = new Audio(); // create a new audio object
_audiochannels[a]['finished'] = -1; // expected end time for this channel
} }
this.playSound = function(soundID){ this.playSound = function(soundID){
if(soundID=="main-music" && _mainMusicChannel!=-1 && _mainMusicChannel.currentTime>0 ){//if music was paused but is going to be played for(var i=0;i<_channelMAX;i++){ //play in different sounds in different channels
_mainMusicChannel.play(); var now = new Date();
} if (_channels[i]["end"] < now.getTime()) {// is this channel finished?
else{ _channels[i]["end"] = now.getTime() + _sounds[soundID].duration*1000;
_channels[i]["audio"].src = _sounds[soundID].src;
_channels[i]["audio"].load();
_channels[i]["audio"].play();
break;
}
}
for(var i=0;i<_audiochannels.length;i++){ }
var thistime = new Date(); this.pauseSound = function(soundID, stop){
if (_audiochannels[i]['finished'] < thistime.getTime()) {// is this channel finished? _sounds[soundID].pause();
_audiochannels[i]['finished'] = thistime.getTime() + document.getElementById(soundID).duration*1000; if(stop) _sounds[soundID].currentTime=0;
_audiochannels[i]['channel'].src = document.getElementById(soundID).src; }
_audiochannels[i]['channel'].load();
_audiochannels[i]['channel'].play();
if(soundID=="main-music" && _mainMusicChannel==-1){
_mainMusicChannel=_audiochannels[i]['channel'];
}
break;
}
}
}
}
this.pauseSound = function(soundID, stop){
for (var i=0;i<_audiochannels.length;i++){
if(_audiochannels[i]['channel'].src == document.getElementById(soundID).src){
_audiochannels[i]['channel'].pause();
if(stop) _audiochannels[i]['channel'].currentTime=0;
}
}
}
this.fadeOutMusic = function(){ this.fadeOutMusic = function(){
if(_mainMusicChannel.volume.toFixed(1)!=0.0){ if(_sounds["main-music"].volume.toFixed(1)!=0.0){
_mainMusicChannel.volume-=0.1; _sounds["main-music"].volume-=0.1;
} }
else{ else{
_mainMusicChannel.pause(); _sounds["main-music"].pause();
controller.fadeOutOver(); controller.fadeOutOver();
} }
} }

View File

@ -35,7 +35,7 @@ function Titlescreen(){
} }
this.goNext = function(){ this.goNext = function(){
document.getElementById("don").play(); //assets.sounds["don"][0].play();
new SongSelect(); new SongSelect();
} }