我目前正在用Javacript开发Flappybird游戏,现在我正在实现一个cookie以存储高分。但这是问题所在,cookie始终是未定义的并且不会更改。
为了让每个人都感到困惑,我应该说我使用Framework p5.js,它可以帮助我绘制东西。该代码在我的gitHub存储库(https://github.com/HaasStefan/challengeRepo/tree/master/FlappyBird)上。主要代码位于名为sketch.js的文件中,但以下是一些摘要:
首先,这是我初始化所有内容以及cookie的地方:
function setup() {
createCanvas(400, 600);
bird = new Bird();
menu = new Menu();
pipes.push(new Pipe());
alert(navigator.cookieEnabled);
if (typeof (document.cookie == "undefined"))
document.cookie = "highscore=0; expires=Sun, 1 Dec 2030 12:00:00 UTC; path=/";
}
接下来,我们要进行的部分是读取和更改cookie:
let str = document.cookie.split(';');
highscore = str[0].split('=')[1];
if (score > highscore) {
highscore = score;
document.cookie = "highscore=" + highscore + "; expires=Sun, 1 Dec 2030 12:00:00 UTC; path=/";
}
我真的希望您能为我解决这个问题,因为我不知道错误是什么。谢谢!
答案 0 :(得分:1)
正如评论中已经提到的,第一个问题是if条件
if (typeof (document.cookie == "undefined"))
必须写为
if (typeof document.cookie != "undefined")
下一个问题是从“高分” cookie中读取值。假设还有其他几个cookie,则读取其值的方式应为:
var highscore = ('; '+document.cookie).split('; highscore=').pop().split(";").shift();
上面一行的结果是字符串类型,因此在进行任何比较之前需要将其转换为int。
highscore = parseInt(highscore)
总结一下:
if (typeof document.cookie != "undefined") {
document.cookie = "highscore=0; expires=Sun, 1 Dec 2030 12:00:00 UTC; path=/";
}
然后
let str = ('; '+document.cookie).split('; highscore=').pop().split(";").shift();
highscore = str ? parseInt(str) : 0;
if (score > highscore) {
highscore = score;
document.cookie = "highscore=" + highscore + "; expires=Sun, 1 Dec 2030 12:00:00 UTC; path=/";
}