javascript的键盘按下事件有哪些?

是这样的我弄了一个可以用上下左右控制它移动的样式但是当我一直按着一个方向的时候它总会移动一个格子然后停顿一下再往那个方向一直走有没有什么办法把它中间的停顿去掉?... 是这样的 我弄了一个可以用上下左右控制它移动的样式 但是当我一直按着一个方向的时候 它总会移动一个格子然后停顿一下再往那个方向一直走 有没有什么办法把它中间的停顿去掉? 展开
 我来答
yugi111
2015-03-14 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
<!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>
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式