javascript - 为什么我的 Javascript 画布不能在键盘输入上移动?
问题描述
所以最近我接触了 Javascript,看了一些教程,读了一个 StackOverflow 问题,问了一个类似的问题。
出于某种原因,我的 Canvas 对象不会移动,并且我似乎做了很多其他示例一样的所有操作。
我的代码:
document.addEventListener('keydown', function(event){
switch (event.keyCode) {
case 87:
alert("w");
break;
case 65:
alert("a");
break;
case 83:
alert("s");
break;
case 68:
moveRight();
break;
case 38:
alert("up");
break;
case 37:
alert("right");
break;
case 39:
alert("left");
break;
case 40:
alert("down");
break;
}
})
function moveRight() {
var element = document.getElementById("plr");
element.style.left = parseInt(element.style.left) - 5 + 'px';
}
// w = 87
// a = 65
// s = 83
// d = 68
// up = 38
// right = 37
// left = 39
// down = 40
#bg{
background-color: blue;
height: 700px;
width: 1200px;
position: relative;
left: -10px;
top: -10px;
}
#plr{
background-color: red;
height: 50px;
width: 50px;
position: absolute;
left: 50px;
top: 300px;
}
<!DOCTYPE html>
<html lang="de" dir="ltr">
<head>
<script src="script.js"></script>
<link rel="stylesheet" href="style.css">
<meta charset="utf-8">
<title></title>
</head>
<body onload="">
<canvas id="bg"></canvas>
<canvas id="plr"></canvas>
</body>
</html>
我知道我在某个地方犯了一个愚蠢/小错误,但我找不到它。感谢您提供任何帮助。
解决方案
在element.style.left = parseInt(element.style.left) - 5 + 'px'
尝试(parseInt(element.style.left.slice(0, -2)) - 5).toString()
更改中,将“px”部分切出,然后将字符串转换为 int,在操作 x - 5 之后将输出转换为字符串并将其与“px”连接。
推荐阅读
- python - 熊猫数据框只获取值而不是定义
- mysql - 在 INSERT 期间使用 SELECT 作为值时的并发性
- flutter - 颤振中的屏幕导航
- c# - 如何为由字符串和 int32 集合组成的对象编写 GetHashCode 方法?
- python - 从 JSON 文件中提取某些值(python)
- python - Pandas 将引用数值列的分类列更改为几列
- spring - 在 Spring Security 中编辑静态用户
- javascript - 将 python 变量添加到 jinja 计数器
- kubernetes - 如何在 kubernetes 的 traefik 入口控制器中设置最大请求正文大小?
- java - 使用 Oracle JDBC 驱动程序关闭休眠会话时,Oracle 泄漏线程