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你最好忽略这个答案。。这根本不是解决办法。