From 4b479b599d80e56daa9c098c787bec8c5990b717 Mon Sep 17 00:00:00 2001 From: -=yb4f310 Date: Thu, 18 Jan 2018 13:54:38 +0100 Subject: [PATCH] object urls for FUCKING WINDOZE --- src/game-lib-d3-audio.js | 5 +++ src/game-lib-system-storage.js | 64 +++++++++++++++++++++++++--------- 2 files changed, 52 insertions(+), 17 deletions(-) diff --git a/src/game-lib-d3-audio.js b/src/game-lib-d3-audio.js index 2f5ed41..5967f57 100644 --- a/src/game-lib-d3-audio.js +++ b/src/game-lib-d3-audio.js @@ -78,10 +78,15 @@ GameLib.D3.Audio.prototype.createInstance = function() { var audioLoader = new THREE.AudioLoader(); + console.log('loading audio : ' + this.name); + //Load a sound and set it as the Audio object's buffer audioLoader.load( this.apiUrl + this.path + '?ts=' + Date.now(), function( buffer ) { + + console.log('loaded audio: ' + this.name); + this.instance.setBuffer( buffer ); this.instance.setLoop( this.loop ); this.instance.setVolume( this.volume ); diff --git a/src/game-lib-system-storage.js b/src/game-lib-system-storage.js index feb8543..c4762ee 100644 --- a/src/game-lib-system-storage.js +++ b/src/game-lib-system-storage.js @@ -856,31 +856,60 @@ GameLib.System.Storage.prototype.loadImage = function(data, callback, errorCallb xhr.onload = function() { - var objectUrl = false; + window.URL = window.URL || window.webkitURL; - var url = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QoWEQMQBXD4hQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAABRSURBVGje7c8xDQAwCAAwmA3koA/PU8FB0jpo1nRc9uI4AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBgX0fjEoBa8xN1z4AAAAASUVORK5CYII='; + console.log(image.name + ' - response type : ' + this.response.type); - try { - if (this.response.type !== 'application/json') { - url = window.URL.createObjectURL(this.response); - objectUrl = true; + var url; + + if (this.response.type.indexOf('application/json') !== -1) { + + var base64 = 'iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QoWEQMQBXD4hQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAABRSURBVGje7c8xDQAwCAAwmA3koA/PU8FB0jpo1nRc9uI4AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBgX0fjEoBa8xN1z4AAAAASUVORK5CYII='; + + function fixBinary (bin) { + var length = bin.length; + var buf = new ArrayBuffer(length); + var arr = new Uint8Array(buf); + for (var i = 0; i < length; i++) { + arr[i] = bin.charCodeAt(i); + } + return buf; } - } catch (error) { - if (errorCallback) { - errorCallback({ - result: 'failure', - message: 'invalid server response trying to download image ' + data.image.name - }); + + var binary = fixBinary(atob(base64)); + var blob = new Blob([binary], {type: 'image/png'}); + try { + url = window.URL.createObjectURL(blob); + } + catch (error) { + if (errorCallback) { + errorCallback({ + result: 'failure', + message: 'invalid server response trying to download image ' + data.image.name + }); + } + } + console.log('creating url : ' + url); + + + } else { + try { + url = window.URL.createObjectURL(this.response); + } catch (error) { + if (errorCallback) { + errorCallback({ + result: 'failure', + message: 'invalid server response trying to download image ' + data.image.name + }); + } } } - var img = document.createElement('img'); + var img = new Image(); - img.onload = function () { + img.onload = function() { - if (objectUrl) { - window.URL.revokeObjectURL(url); - } + window.URL.revokeObjectURL(url); if (callback) { callback(img); @@ -889,6 +918,7 @@ GameLib.System.Storage.prototype.loadImage = function(data, callback, errorCallb if (onLoaded) { onLoaded(image, data.createTexture); } + }; img.src = url;