如何使用document.onkeydown使用箭头键移动对象?

时间:2016-09-26 08:31:41

标签: javascript canvas event-handling keyboard-events onkeydown

我在学校有一项任务,我们应该使用箭头键在画布中创建一个可移动的对象。我在完成代码并使对象实际移动时遇到了麻烦。截至目前,我只收到一个警告框,显示文字" undefined"当尝试使用右箭头键移动对象时(因为此键是我目前唯一开始使用的键)。有没有人对如何完成此代码有一些线索?我将非常感激!

window.onload = function(){
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');

var x = 0;
var y = 0;

context.fillStyle = "#c409a3";
context.fillRect(x, y, 100, 100);
}

document.onkeydown = function(e){
alert(e.keycode);
var rect = new Object();
rect.x = 0;
rect.y = 0;
rect.moveright = function(){rect.x++;}
rect.draw = function(){
   context.fillStyle = "#c409a3";
   context.fillRect(rect.x, rect.y, 100, 100)

}
}
rect.erease = function(){
}
rect.moveleft = function(){rect.x--;}

rect.moveup = function(){rect.y++;}

rect.movedown = function(){rect.y--;}


if (e.keyCode == "39"){
    rect.erease();
    rect.moveright();
    rect.draw();
}
if (e.keyCode == "37"){
   rect.erease();
   rect.moveleft();
   rect.draw();
}
if (e.keyCode == "38"){
   rect.erease();
   rect.moveup();
   rect.draw();
}
if (e.keyCode == "40"){
   rect.erease();
   rect.movedown();
   rect.draw();
}

1 个答案:

答案 0 :(得分:0)

由于这是家庭作业,您无法获得完整的解决方案。但你需要考虑(至少):

  • 应该实例化Rectangle对象
  • 所有对象的范围
  • 分别负责绘图,清理,移动等的对象
  • Html Canvas的2D坐标系。哪种方式是向上/向下和向左/向右
  • 如果您的矩形可能不在画布上

除此之外,请查看事件API。属性keyCode位于驼峰大小写而不是小写。

alert(e.keyCode); // camel case

这将解决undefined问题

相关问题