簡體   English   中英

我正在使用HTML5本地存儲為用戶制作保存游戲。 只是不起作用。 (JavaScript)

[英]I'm using HTML5 Local storage to make save games for users. It just is not working. (Javascript)

這是我一直在使用的教程 就在最底部。

我正在使用的功能是:

function saveGame(){
    printMessageLine("Saved.");
    localStorage['shittyInc_save'] = btoa(JSON.stringify(game));
}

function loadGame() {

    var save_data = get_cookie('shittyInc_save');
    printMessageLine("Loaded.");
    console.log(save_data);
    if (!save_data) return;
    console.log(save_data);
    game = save_data
}

可變游戲看起來像

    var game = {
     money: 0,
     xp: 0,
     level: 1,
     xpPimps: 0,
     slaves: 0,
     printers: 0,
     xpWhores: 0,
     slaveDrivers: 0,
     xpMines: 0,
     moneyTrees: 0,
     shittyInvestors: 0,
     shitMoney: 0,
     shittyCompanies: 0,
     moneyPigs: 0,
     shittyBitcoins: 0
};

該變量已正確使用並經過測試。

我有一個使用saveGame();的按鈕saveGame(); loadGame();

<p><button onclick="saveGame()" style="background: #ccc url(triangular.png); padding: 0.2em 2em"">Save</button></p>
     <p><button onclick="loadGame()" style="background: #ccc url(triangular.png); padding: 0.2em 2em"">Load</button></p>

似乎什么也沒做,我想念什么?

知道了,下面的固定代碼:

  function loadGame() {

    var save_data = localStorage['shittyInc_save']
    printMessageLine("Loaded.");
    console.log(save_data);
    if (!save_data) return;
    console.log(save_data);

    game = JSON.parse(atob(localStorage['shittyInc_save']))
}

您從localStorage獲取數據的方式與在本地存儲數據的方式相同,而不是使用get_cookie

var data = 'some data';
//save to localStorage
localStorage['myData'] = data;

//get from localStorage
var fromStorage = localStorage['myData']; //'some data'

旁注:內聯JavaScript是一種不好的做法,會給您帶來麻煩。 閱讀以下結果: https : //www.google.com/search?q= Why+is+ addEventListener最佳做法是將事件監聽器附加到addEventListener ,如下所示:

標記:

<button id="myButton"></button>

JavaScript:

var myButton = document.getElementById('myButton');
myButton.addEventListener('click', myClickFunction);

myClickFunction(event) {
  //do something
}

這是一個完整的示例,演示了單擊功能以及如何從localStorage進行保存和加載。 通過輸入內容進行嘗試,然后單擊“保存”。 然后,您可以更改輸入或重新加載頁面,然后單擊“加載”以返回值。 現場演示在這里(單擊)。

標記:

<input id="save-data" type="text" placeholder="type data here">
<button id="save">Save</button>
<button id="load">Load</button>

JavaScript:

var save = document.getElementById('save');
var load = document.getElementById('load');
var saveDataInput = document.getElementById('save-data');

save.addEventListener('click', function() {
  saveGame();
});

load.addEventListener('click', function() {
  loadGame();
});

function saveGame() {
  localStorage.saveData = saveDataInput.value;
}

function loadGame() {
  saveDataInput.value = localStorage.saveData;
}

本教程正確使用localStorage[]對象進行保存和加載。

大約2/3通過http://blog.samgb.com/incrementals-from-zero-to-hero-part-3/

我們這樣與本地存儲接口:

保存

localStorage['clickclick_save'] = btoa(JSON.stringify(player));

載入中

player = JSON.parse(atob(localStorage['clickclick_save']))

您發布的代碼與本教程中介紹的兩種不同的存儲和加載游戲數據的方式不匹配。 好像您將錢包放在床下,然后在抽屜里找它一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM