使用Javascript进行水平移动
我觉得自己像个十足的傻瓜,我让它工作了,然后我不小心忘了保存它!我是个白痴。我花了最后一天的时间试图重现我所拥有的,但我做不到。基本上(从我上次的保存)我有:使用Javascript进行水平移动,javascript,html,canvas,Javascript,Html,Canvas,我觉得自己像个十足的傻瓜,我让它工作了,然后我不小心忘了保存它!我是个白痴。我花了最后一天的时间试图重现我所拥有的,但我做不到。基本上(从我上次的保存)我有: function canvasMove(e) { if(!e) var e = window.event; var downcheck; var upcheck; var leftcheck; var rightcheck; if(e.keyCode == '38') {
function canvasMove(e) {
if(!e) var e = window.event;
var downcheck;
var upcheck;
var leftcheck;
var rightcheck;
if(e.keyCode == '38') {
if(up + down == 0) downcheck = false;
else downcheck = true;
e.preventDefault();
}
if(e.keyCode == '40') {
if(up + down > HEIGHT - 110) upcheck = false;
else upcheck = true;
e.preventDefault();
}
if(e.keyCode == '37') {
if(left + right == 0) rightcheck = false;
else rightcheck = true;
e.preventDefault();
}
if(e.keyCode == "39") {
if(left + right > WIDTH - 110) leftcheck = false;
else leftcheck = true;
e.preventDefault();
}
if(leftcheck == true) { left += 10; counting() };
if(rightcheck == true) { right -= 10; counting() };
if(upcheck == true) { up += 10; counting(true) };
if(downcheck == true) { down -= 10; counting(true) };
}
当然,问题是Javascrpt不支持检查是否同时按下两个键的功能。我想实现的是,当用户按下并离开时,他们将沿对角线移动。忽略“计数”功能,它只是跟踪用户移动了多少 我用else和if语句成功地完成了这一点!所以我想知道你们能否试一试。每个键if语句中的第一个if语句是这样的,用户不能离开画布框。然后我有一个函数,可以通过重新绘制画布来移动用户
function redraw() {
clear(draw);
draw.fillStyle = 'rgba(0,0,0,0.5)';
draw.fillRect(left + right, up + down, '100', '100');
}
“清除”函数只是一个清除整个画布的简单函数。这一切都由一个init函数控制,该函数如下所示:
function init() {
canvas = document.getElementById('game');
HEIGHT = canvas.height;
WIDTH = canvas.width;
draw = canvas.getContext('2d');
setInterval(redraw, 30);
document.onkeydown = canvasMove;
}
您的-check标志需要是全局变量,而不是函数范围的变量,否则它们永远不会在keydown事件之间保持设置(一次只处理一个键)。您还需要一个keyup事件处理程序,当释放一个键时,该处理程序将取消设置正确的标志。“当然,问题是Javascrpt不支持检查是否同时按下两个键。我想要完成的是,当用户按下并离开时,它们将沿对角线移动。”您是说您以前成功地让浏览器识别多个并发按键?现在还不清楚你在找什么。某些现有代码不起作用吗?如果是的话,代码的哪一部分?是的。我让它工作,但我不记得我做了什么。我想知道是否还有其他人可以尝试一下,或者提出更好的解决方案。我已经解释过了,我希望它能够水平移动。该死!我的问题是我没有意识到全局变量和局部变量之间的区别。在我最初的版本中,我使用了全局变量,而在这个版本中,我使用了局部变量。你生活和学习,是吗?