Javascript 在本地存储中保存游戏体验
我有: 我想在Javascript 在本地存储中保存游戏体验,javascript,Javascript,我有: 我想在localStorage中保存游戏状态,刷新页面后我想刷新游戏状态 我做错了什么?用 localStorage.setItem(key, JSON.stringify(yourValue)); JSON.parse(localStorage.getItem(yourValue)); 并用 localStorage.setItem(key, JSON.stringify(yourValue)); JSON.parse(localStorage.getItem(yourValue
localStorage
中保存游戏状态,刷新页面后我想刷新游戏状态
我做错了什么?用
localStorage.setItem(key, JSON.stringify(yourValue));
JSON.parse(localStorage.getItem(yourValue));
并用
localStorage.setItem(key, JSON.stringify(yourValue));
JSON.parse(localStorage.getItem(yourValue));
如果localStorage中未存储任何值,则会得到“null”。因此,您可以使用:
var pieces = localStorage.getItem('piecesArray');
if (pieces) {
piecesArray = JSON.parse(pieces);
} else {
piecesArray = new Array();
}
我注意到你的小提琴有两个问题 首先,您正在调用一个未定义的函数,因此您没有运行
setObj
函数
if (drawHighlight) highlightRect(drawX, drawY);
// liczymy kliknięcia
clickCounter(); // This function doesn't exist
localStorage.setObj("piecesArray", piecesArray);
我为您添加了一个虚拟的clickCounter
函数,它什么都不做
此外,您正在从本地存储中加载片段array
,但还是覆盖了它。加载图像后,您需要检查是否已有片段ray
。我是这样做的:
function onImage1Load() {
var r;
if (piecesArray.length === 0) {
for (var i = 0; i < 4; i++) {
for (var j = 0; j < 3; j++) {
r = new Rectangle(i * blockSize, j * blockSize, i * blockSize + blockSize, j * blockSize + blockSize);
piecesArray.push(r);
}
}
scrambleArray(piecesArray, 30);
}
drawImage();
}
函数onImage1Load(){
var-r;
if(piecessarray.length==0){
对于(变量i=0;i<4;i++){
对于(var j=0;j<3;j++){
r=新矩形(i*blockSize,j*blockSize,i*blockSize+blockSize,j*blockSize+blockSize);
推(r);
}
}
扰频阵列(piecessarray,30);
}
drawImage();
}
您在JSFIDLE的
窗口中设置了一个窗口。onload
。load
包装器。从你的小提琴中删除它,使用页面左上角的No wrap-in
。localStorage是否有getObj
方法?@fabriciomatté为什么你要在他自己的问题中编辑他的JSFiddle链接来回答,而不是做出新的答案并在这里发布你的答案?@blachawk根据它将是3个编辑器。我相信现在已经没有剩余的打字错误了=]
@adeneo看看他的小提琴,这是一个存储和获取对象的自定义函数,但这不是解决方案。他使用特定的getObj和setObj函数来设置和获取对象。看看他的小提琴。@Piszu你必须在运行时用localStorage.setItem(JSON.stringify(piecesArray))保存你的片段;我用这个没有任何问题problems@RwamDev请看他的小提琴,是的@鲁瓦姆德夫-我不明白:X@Piszu你最好忽略这个答案。。这根本不是解决办法。