这是问题,document.onkeydown = checkkeycode
我将两个变量传递给checkeycode e,它存储事件,因此键码和数组圈我想用变量c的最新位置更新。当我将圆圈传递给函数时,因此它变得不确定 {circle [4] = c ._。ty}; 返回一个未定义的错误 我试过把document.write(circle); 进入文档,它只是写了undefined,当我用E切换它成为一个键盘对象。我需要解决的是:
如何将数组圆圈传递给函数,以便当raphael翻译圆圈时,它会更新圆圈中的值?
我只是做{c.translate(value)} {circle [4] = c ._。ty}? 将单个if事件附加两个不同的函数?
<html>
<head>
<script language="javascript" type="text/javascript" src="/home/andrew/Documents/rahpael/raphael-min.js"></script>
</head>
<body>
<script language="javascript">
var paper = Raphael(50, 50, 420, 300);
var d = paper.rect(150, 150, 30, 30);
var c = paper.circle(50, 50, 40);
var circle = [c.attrs.cy, c.attrs.cx, c.attrs.r, c._.tx, c._.ty];
var rectie = [ d.attrs.x, d.attrs.y, d.attrs.height, d.attrs.width];
document.onkeydown = checkKeycode
function checkKeycode(e, circle) {
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
if (keycode == 40) { c.translate(0, 10)}; //{circle[4] = c._.ty};// down
if (keycode == 39) { c.translate(10, 0)}; // right
if (keycode == 38) { c.translate(0, -10)}; // up
if (keycode == 37) { c.translate(-10, 0)}; // left
}
// deleted some comments I've made so far.
</script>
</body>
</html>
答案 0 :(得分:3)
那里有几个问题:
1)传递参数
我将两个变量传递给checkeycode
不,你不是。浏览器会将一个参数传递给它event
(除非它是IE,但你已经处理过了。)
如果你改变:
document.onkeydown = checkKeycode
到
document.onkeydown = function(e) {
checkKeycode(e, circle);
};
...你将传递你在全球范围内定义的circle
。
2)姓名
您的checkkeycode
函数接受参数e
和circle
,但似乎使用了e
和c
。
(无论如何,您的checkkeycode
代码已在全局范围内circle
关闭,因此您可以从circle
的定义中删除checkkeycode
参数并使用{{ 1}}而不是circle
。但如果可以,最好通过将参数传递给函数来保持模块化。)
因此,如果您要进行模块化,只需在事件处理程序中关闭c
:
circle