【发布时间】:2014-08-26 19:57:12
【问题描述】:
我正在创建一个 HTML5 2D 游戏,我只想请求每个资产一次,然后将它们存储在用户的文件系统中,我正在使用 localStorage 来完成此任务,但是 AFAIK 每个源的限制为 5mb,(我的整个游戏将不止于此),并且我想知道如何将我的游戏资产存储在用户的机器中而不受限制,这是我到目前为止所做的:
items.js:
/**
* Copyright 2014 - Edgar Alexander Franco.
*
* @author Edgar Alexander Franco
* @version 1.0.0
*/
var items = [
{
name : 'characters_scott',
url : './img/game/characters/scott',
type : 'png'
},
{
name : 'map_1',
url : './img/game/map/1',
type : 'jpg'
},
{
name : 'map_2',
url : './img/game/map/2',
type : 'jpg'
}
];
资源.js
/**
* Copyright 2014 - Edgar Alexander Franco.
*
* @author Edgar Alexander Franco
* @version 1.0.0
*/
var Resource = (function () {
var self = {};
self.get = {};
self.load = function (items) {
var xhr = (typeof XMLHttpRequest != 'undefined') ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP') ;
var item, content, mime;
for (var i in items) {
item = items[ i ];
content = localStorage.getItem(item.url);
if (content == null) {
xhr.open('GET', item.url, false);
xhr.send();
content = xhr.responseText;
localStorage.setItem(item.url, content);
}
if (item.type != 'audio') {
mime = (item.type == 'jpg') ? 'image/jpeg' : 'image/png' ;
self.get[ item.name ] = new Image();
self.get[ item.name ].src = 'data:' + mime + ';base64,' + content;
} else {
// Not yet...
}
}
}
return self;
})();
上面的代码效果很好,但不能满足我的需求,正如你所看到的,我正在使用 localStore,它有它的局限性,我想调整相同的代码,但为了无限存储,有什么想法吗?
【问题讨论】:
标签: html caching local-storage assets html5-appcache