【发布时间】:2011-07-23 20:51:17
【问题描述】:
下面的代码应该在按下键盘上的 WASD 键时使矩形移动。它不起作用。矩形不移动,但不会产生错误。我怎样才能做到这一点?
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="90%" height="90%" version="1.1"
xmlns="http://www.w3.org/2000/svg">
<script type="text/javascript">
<![CDATA[
var x;
var y;
function move()
{
x = new Number(document.getElementById("player").x);
y = new Number(document.getElementById("player").y);
switch (event.keyCode)
{
case 119:
y--;
document.getElementById("player").y=y;
break;
case 115:
y++;
document.getElementById("player").y=y;
break;
case 97:
x--;
document.getElementById("player").x=x;
break;
case 100:
x++;
document.getElementById("player").x=x;
break;
default:
}
}
document.documentElement.addEventListener("keypress", move, true);
]]>
</script>
<rect x="0" y="0" height="100%" width="100%" style="stroke-width:5; stroke:black; fill:white"></rect>
<rect x="250" y="250" id="player" height="50" width="50" style="stroke-width:1; stroke:red; fill:red"></rect>
</svg>
【问题讨论】:
-
@mortalc 也许您没有看到my answer to your previous question,其中包含要更改代码的特定内容,并为您提供了比上面显示的更简洁的解决方案。此外,不清楚你在这里问什么。我看到的是“为什么?”这是在三个语句的项目符号列表之后,然后是一个关于 DOM 交互基础的单独问题。当您甚至没有查看以前的答案时,这似乎是一个要求总体改进的猎枪问题。
-
我之所以提出最后一个问题,是因为我正在阅读的 XML DOM 教程中没有提到它,但我最近发现了答案,所以忽略它。现在谈谈你的观点: 1. 正如我所提到的,我试过了,但没有用。我想知道为什么。 2. 我希望我知道那是什么意思! 3. 我不听……对不起 4. 我希望我知道那是什么意思! 5. 好的 6. 按键很重要,因此在按住按钮时它会继续移动。
-
关于我的观点: 2. 我想知道为什么当使用矩形而不是圆形时,另一个答案(只是我的带有事件侦听器的代码)不起作用。 3. 一个让我困惑的奇怪现象。
-
@mortalc 如果您不理解我在另一个问题中的回答,请在该问题中发表评论。我会在我对这个问题的回答中提供更多细节。
-
@mortalc 我猜不出为什么您的代码在使用矩形而不是圆形时不起作用。如果您需要这方面的帮助,请使用无效的代码编辑您的问题(不是对您所做工作的模糊描述)。
标签: javascript svg interactive