我正在学校用javascript制作游戏,但是我遇到了更新计数器的问题。这是我遇到问题的代码:
function drawUnits() {
ctx.drawImage(log, 380, 5, 32, 32);
ctx.textBaseline = "top";
ctx.fillText(logy, 420, 21);
ctx.textBaseline = "bottom";
ctx.fillText("Logs", 420, 21);
}
function Dayend(message) {
if (message == 1) {
ctx.width = ctx.width;
alert("You chopped some trees");
var logy = logy + 4;
DrawUnits()
}
}
window.addEventListener('keydown', function(event) {
if (event.keyCode == 85) {
Dayend(1);
}
});

logy是一个先前定义的变量,log是前面定义的图片。
我不知道代码有什么问题,但是只要按下按钮我就会收到警报但计数器没有更新
谢谢大家,我使用了你的答案并改变了一些不相关的东西,它再次神奇地起作用了:)
答案 0 :(得分:1)
代码缺少几个小括号,因此它不可运行。请修理它。另外,在你评论中你提到logy是在上面的代码之前的某个地方定义的,但你是在Dayend()函数中用sam ename重新定义一个局部变量。这可能是你的问题,本地logy变量是设置而不是全局变量?尝试chaiging:
var logy = logy + 4;
到
logy += 4;
答案 1 :(得分:0)
您正在使用logy
重新实例化变量var
。尝试用以下代码替换最后几行:
function Dayend(message) {
if(message == 1){
ctx.width = ctx.width;
alert("You chopped some trees");
logy = logy + 4;
DrawUnits()
}
}
您还需要确保在全局状态中跟踪logy
,并且您不会在其他地方覆盖它。您可能最好将值传递给DrawUnits()
。