javascript的键盘按下事件有哪些?
是这样的我弄了一个可以用上下左右控制它移动的样式但是当我一直按着一个方向的时候它总会移动一个格子然后停顿一下再往那个方向一直走有没有什么办法把它中间的停顿去掉?...
是这样的 我弄了一个可以用上下左右控制它移动的样式 但是当我一直按着一个方向的时候 它总会移动一个格子然后停顿一下再往那个方向一直走 有没有什么办法把它中间的停顿去掉?
展开
1个回答
展开全部
<!DOCTYPE HTML>
<html>
<head>
<meta charset=UTF-8 />
<title>KeyMoveRect</title>
<style type="text/css">
#wrap {
margin: auto;
position: relative;
width: 80%;
}
</style>
<script type="text/javascript">
onload = function ()
{
var a = new Array ([
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
], [
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
], [
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
], [
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
], [
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
], [
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
], [
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
], [
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
], [
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
]);
var randX = Math.floor (Math.random () * a.length), randY = Math.floor (Math.random () * a[randX].length);
a[randX][randY] = 0;
for ( var i = 0; i < a.length; i++)
{
var array = [];
for ( var j = 0; j < a[i].length; j++)
{
var aa = document.createElement ("div");
aa.style.position = "absolute";
aa.style.border = '1px solid black';
aa.style.width = W + "px";
aa.style.height = H + "px";
aa.style.left = j * W + "px";
aa.style.top = i * H + "px";
if (a[i][j] == 0)
{
aa.style.backgroundColor = '#ff0000';
X = i;
Y = j;
}
else
{
aa.style.backgroundColor = 'green';
}
wrap.appendChild (aa);
array.push (aa);
}
SITE.push (array);
}
}
var exchange = function (dir)
{
var tx = X, ty = Y, d;
if (dir == 37)
{
if (Y < 1)
{
return;
}
else
{
ty--;
d = 'left';
}
}
else if (dir == 38)
{
if (X < 1)
{
return;
}
else
{
tx--;
d = 'top';
}
}
else if (dir == 39)
{
if (Y > SITE[X].length - 2)
{
return;
}
else
{
ty++;
d = 'left';
}
}
else if (dir == 40)
{
if (X > SITE.length - 2)
{
return;
}
else
{
tx++;
d = 'top';
}
}
var that = SITE[tx][ty];
var me = SITE[X][Y];
var sd = that.style[d];
that.style[d] = me.style[d];
me.style[d] = sd;
var tmp = SITE[tx][ty];
SITE[tx][ty] = SITE[X][Y];
SITE[X][Y] = tmp;
X = tx;
Y = ty;
}
var W = 50, H = 50, X = -1, Y = -1, SITE = [];
document.onkeydown = function (e)
{
e = e || window.event;
var keyCode = e.keyCode;
if (!/^(37|38|39|40)$/.test (keyCode))
{
return false;
}
exchange (keyCode);
};
document.ondragstart = document.onselectstart = document.oncontextmenu = function ()
{
return false;
}
</script>
</head>
<body>
<div id="wrap"></div>
</body>
</html>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询