在刷新浏览器时,我似乎找不到localStorage记录点击变量的方法。
我尝试过使用JSON.stringify和JSON.parse,但后来发现了parseInt,这似乎是一个更好的选择(我只是想存储一个数字)。
我对编程很陌生,我检查的所有例子都是纯粹的javascript,太复杂/解释不当或过时。希望你能帮助我。我一直试图解决这个问题一个多星期。
更多信息:我正在使用Phaser 2.5.0和MAMP。谷歌浏览器v49.0.2623.112(64位),OS X 10.8.5。
var game = new Phaser.Game(800, 600, Phaser.AUTO, 'phaser-example', { preload: preload, create: create, update: update });
var scoreText;
var clicks = 0;
function preload() {
game.load.image('clickBox', 'assets/ClickMe.png');
game.stage.backgroundColor = '#182d3b';
game.stage.disableVisibilityChange = true;
}
function create() {
localStorage.setItem('clicks', parseInt('clicks'));
localStorage.getItem('clicks');
button = game.add.button(game.width/2, game.height/2, 'clickBox', upScoreText);
scoreText = game.add.text(30, 30, "CLICKS: " + clicks, {font: "20px Arial", fill: "#ffffff", align: "left"});
button.scale.x = 0.5;
button.scale.y = 0.5;
button.anchor.setTo(0.5);
button.inputEnabled = true;
}
function update () {
scoreText.setText("CLICKS: " + clicks);
}
function upScoreText () {
clicks++;
}
答案 0 :(得分:1)
您不应存储文字clicks
,而应存储具有该名称的变量。在parseInt
上调用clicks
没有任何意义,因为它已经是一个数字。此外,localStorage将所有内容存储为字符串,因此无论如何,它最终都会以字符串形式存储。
储存:
localStorage.setItem('clicks', clicks); // is always stored as string
读:
clicks = +localStorage.getItem('clicks'); // `+` makes it a number
现在你必须将上述陈述放在正确的位置。首先将值写入存储然后再将其读出是没有意义的:显然,该值将与之前相同,并且在之前存储的内容中没有任何优势。你不妨跳过这两行...
相反,您需要在create
函数中读取一次值,并在更改值时写入值,即在upScoreText
中:
function create() {
// Load. If not exists in localStorage, use 0.
// If it does, cast to number with `+`:
clicks = +localStorage.getItem('clicks') || 0;
// etc...
}
function upScoreText () {
clicks++;
// Save:
localStorage.setItem('clicks', clicks);
}
现在,您有一个不断增加的点击变量,可以在页面重新加载后继续存在,但您可能需要添加一种方法将值重置为0.
答案 1 :(得分:0)
您使用parseInt错误,而不是
localStorage.setItem('clicks', parseInt('clicks'));
你应该使用
localStorage.setItem('clicks', parseInt(clicks));/*removed the quotes for the clicks*/
我认为ypu应首先检查localStorage中是否存在clicks变量,然后分配变量点击,但这只是一个建议。你可以这样实现: -
var clicks=localStorage.getItem("clicks")||0;
不确定你是否想要这个:/