• 利用js键盘事件制作会移动效果


    会移动的方块

    描述 按键盘上的方向键方块会移动,按住alt键和方向键进行大幅度移动

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>会移动的方块(按方向键或alt加方向键)</title>
        <style>
            * {margin: 0;padding: 0;}
            div { 200px;height: 200px;position: absolute;background:cyan;}
        </style>
        <script>
        /*
            分析
            左 对应的键码keyCode:37
            上 对应的键码keyCode:38
            右 对应的键码keyCode:39
            下 对应的键码keyCode:40
    
    
         */
            window.onload = function(){
                var oDiv = document.getElementById('div');
                window.onkeydown = function(ev){
                    var e = ev || window.event;
                    //alert(e.keyCode);//查看键码
                    var speed = 10; //每次变化的数
                    //判断是否按下alt键,如果按下每次增加的数度翻十倍
                    if(e.altKey){
                        speed *= 10;
                    }
                    switch(e.keyCode){
                        //
                        case 37:     
                            //获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
                            var current = parseInt(getStyle(oDiv, 'left'));
                            //每次有效样式减10px
                            oDiv.style.left = current - speed + 'px';
                            break;
                        //
                        case 38:     
                            //获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
                            var current = parseInt(getStyle(oDiv, 'top'));
                            //每次有效样式减10px
                            oDiv.style.top = current - speed + 'px';
                            break;
                        //
                        case 39:     
                            //获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
                            var current = parseInt(getStyle(oDiv, 'left'));
                            //每次有效样式加10px
                            oDiv.style.left = current + speed + 'px';
                            break;
                        //
                        case 40:     
                            //获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
                            var current = parseInt(getStyle(oDiv, 'top'));
                            //每次有效样式加10px
                            oDiv.style.top = current + speed + 'px';
                            break;
                    }
                }
    
            }
    
            /*------封装获取当前有效样式的函数---------*/
                function getStyle(node, styleType){
                    return node.currentStyle ? node.currentStyle[styleType] : getComputedStyle(node)[styleType];
                }
    
    
            /*------封装获取当前有效样式的函数end---------*/
    
        </script>
    </head>
    <body>
        <div id="div"></div>
    </body>
    </html>

    浏览器效果:

    才此基础上插入一个背景图加以修饰

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>会移动的凤凰(按方向键或alt加方向键)</title>
        <style>
            * {margin: 0;padding: 0;}
            div { 293px;height: 220px;position: absolute;background:url(fenghuang1.gif);}
        </style>
        <script>
        /*
            分析
            左 对应的键码keyCode:37
            上 对应的键码keyCode:38
            右 对应的键码keyCode:39
            下 对应的键码keyCode:40
    
    
         */
            window.onload = function(){
                var oDiv = document.getElementById('div');
                window.onkeydown = function(ev){
                    var e = ev || window.event;
                    //alert(e.keyCode);//查看键码
                    var speed = 10; //每次变化的数
                    //判断是否按下alt键,如果按下每次增加的数度翻十倍
                    if(e.altKey){
                        speed *= 10;
                    }
                    switch(e.keyCode){
                        //
                        case 37:     
                            //获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
                            var current = parseInt(getStyle(oDiv, 'left'));
                            //每次有效样式减10px
                            oDiv.style.left = current - speed + 'px';
                            //按下  左时 div第transform 都等于 逆时针180度
                            oDiv.style.transform = 'rotate(-180deg)';
                            break;
                        //
                        case 38:     
                            //获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
                            var current = parseInt(getStyle(oDiv, 'top'));
                            //每次有效样式减10px
                            oDiv.style.top = current - speed + 'px';
                            //按下  上时 div第transform 都等于 逆时针90度
                            oDiv.style.transform = 'rotate(-90deg)';
                            break;
                        //
                        case 39:     
                            //获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
                            var current = parseInt(getStyle(oDiv, 'left'));
                            //每次有效样式加10px
                            oDiv.style.left = current + speed + 'px';
                            //按下  右时 div第transform 都等于 逆时针0度
                            oDiv.style.transform = 'rotate(0deg)';
                            break;
                        //
                        case 40:     
                            //获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
                            var current = parseInt(getStyle(oDiv, 'top'));
                            //每次有效样式加10px
                            oDiv.style.top = current + speed + 'px';
                            //按下  右时 div第transform 都等于 顺时针90度
                            oDiv.style.transform = 'rotate(90deg)';
                            break;
                    }
                }
    
            }
    
            /*------封装获取当前有效样式的函数---------*/
                function getStyle(node, styleType){
                    return node.currentStyle ? node.currentStyle[styleType] : getComputedStyle(node)[styleType];
                }
    
    
            /*------封装获取当前有效样式的函数end---------*/
    
        </script>
    </head>
    <body>
        <div id="div"></div>
    </body>
    </html>

    浏览器效果:

     

    使用到的图片:

  • 相关阅读:
    动态规划-神奇的口袋V1
    独立项目-建立Web服务器-00
    连接数据库时出现:SQL Server 建立连接时出现与网络相关的或特定于实例的错误
    独立项目-MemoryStream-内存数据读写-01
    独立项目-场景刷怪、小怪AI、主角战斗、小怪死亡-01
    独立项目-角色控制器FSM-FSM有限状态机-03
    独立项目-角色控制器FSM-AnimatorController学习-02
    独立项目-角色控制器FSM-学习内容-01
    Unity中的UGUI之Rect Transform__02
    矩阵的平移、旋转与缩放
  • 原文地址:https://www.cnblogs.com/taohuaya/p/9594040.html
Copyright © 2020-2023  润新知