zoukankan      html  css  js  c++  java
  • 飞机游戏动画特效

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
    
            #view {
                width: 320px;
                height: 568px;
                background: url('./img/bg.png');
                margin: 0 auto;
            }
    
            #fly_me {
                width: 34px;
                height: 24px;
                position: absolute;
            }
        </style>
    
    </head>
    
    <body>
        <div id="view"></div>
    </body>
    <script>
        // 创建战机
        var flyEle = document.createElement('div');
        flyEle.id = 'fly_me';
        flyEle.innerHTML = '<img src = "./img/me.png" />';
        document.body.appendChild(flyEle);
    
        // 战机跟随鼠标
        document.onmousemove = function (e) {
            var flyEle = document.getElementById('fly_me');
            var view = document.getElementById('view');
            var flyX = e.clientX - 17;
            var flyY = e.clientY - 12;
            var xCheck = flyX > view.offsetLeft && flyX < view.offsetLeft + view.offsetWidth - 34;
            var yCheck = flyY > view.offsetTop && flyY < view.offsetTop + view.offsetHeight - 24;
            if (xCheck && yCheck) {
                flyEle.style.top = flyY + 'px';
                flyEle.style.left = flyX + 'px';
                flyEle.flag = true;
            }
        }
    
        // 创建子弹 
        var objB = { //子弹的相关值
            name: 'bullet',
            num: 1,
            arr: [],// ['id|top|left']
             6,
            height: 14,
            path: './img/b.png'
        };
        createBullet(objB);
        function createBullet(obj) {
            setInterval(function () {
                var flyEle = document.getElementById('fly_me');
                if (flyEle.flag) {
                    var ele = document.createElement('div');
                    ele.id = obj.name + obj.num;
                    var length = obj.arr.length;
                    if (length < 50) {
                        obj.arr[length] = ele.id + '|';
                        obj.num++;
                        ele.style.width = obj.width + "px";
                        ele.style.height = obj.height + "px";
                        ele.style.position = 'absolute';
                        ele.style.background = 'url(' + obj.path + ')';
    
                        ele.style.top = parseInt(flyEle.style.top) + 6 + 'px';
                        obj.arr[length] = obj.arr[length] + ele.style.top + '|';
                        ele.style.left = parseInt(flyEle.style.left) + 14 + 'px';
                        obj.arr[length] = obj.arr[length] + ele.style.left;
                    }
                    document.body.appendChild(ele);
                }
            }, 1000)
        }
        // 让子弹运动其起来
        function moveBullet() {
            var flyEle = document.getElementById('fly_me');
            if (flyEle.flag) {
                for (var i = 0; i < objB.arr.length; i++) {
                    var newArr = objB.arr[i].split('|');
                    var eleB = document.getElementById(newArr[0]);
                    newArr[1] = parseInt(newArr[1]) - 1;
                    eleB.style.top = newArr[1] + 'px';
                    objB.arr[i] = newArr[0] + '|' + newArr[1] + '|' + newArr[2];
                    if (newArr[1] < 0) {
                        objB.arr.splice(i, 1);
                        var delEle = document.getElementById(newArr[0]);
                        delEle.parentNode.removeChild(delEle);
                    }
                }
    
            }
        }
    
        // 创建敌机
        var objF = {
            name: 'foe',
            num: 1,
            arr: [],// ['id|top|left']
             34,
            height: 24,
            path: './img/foe.png'
        };
        createFoe(objF);
        function createFoe(obj) {
            setInterval(function () {
                var flyEle = document.getElementById('fly_me');
                if (flyEle.flag) {
                    var ele = document.createElement('div');
                    ele.id = obj.name + obj.num;
                    var length = obj.arr.length;
                    if (length < 50) {
                        obj.arr[length] = ele.id + '|';
                        obj.num++;
                        ele.style.width = obj.width + "px";
                        ele.style.height = obj.height + "px";
                        ele.style.position = 'absolute';
                        ele.style.background = 'url(' + obj.path + ')';
    
                        ele.style.top = 0;
                        obj.arr[length] = obj.arr[length] + ele.style.top + '|';
                        var ran = Math.random() * 286;
                        ele.style.left = view.offsetLeft + ran + 'px';
                        obj.arr[length] = obj.arr[length] + ele.style.left;
                    }
                    document.body.appendChild(ele);
                }
            }, 1000)
        }
        // 让敌机运动其起来
        function moveFoe() {
            var flyEle = document.getElementById('fly_me');
            if (flyEle.flag) {
                for (var i = 0; i < objF.arr.length; i++) {
                    var newArr = objF.arr[i].split('|');
                    var eleB = document.getElementById(newArr[0]);
                    newArr[1] = parseInt(newArr[1]) + 1;
                    eleB.style.top = newArr[1] + 'px';
                    objF.arr[i] = newArr[0] + '|' + newArr[1] + '|' + newArr[2];
                    if (newArr[1] > view.offsetHeight - 24) {
                        objF.arr.splice(i, 1);
                        var delEle = document.getElementById(newArr[0]);
                        delEle.parentNode.removeChild(delEle);
                    }
                }
    
            }
        }
    
    
        setInterval(function () {
            // 让子弹运动其起来
            moveBullet()
            // 让敌机运动起来
            moveFoe();
            for (var i = 0; i < objF.arr.length; i++) {
                var newArr = objF.arr[i].split('|');
                var eleF = document.getElementById(newArr[0]);
                var xFS = parseInt(newArr[2]);
                var xFE = parseInt(newArr[2]) + 34;
                var yFS = parseInt(newArr[1]);
                var yFE = parseInt(newArr[1]) + 24;
                for (var j = 0; j < objB.arr.length; j++) {
                    var newArr1 = objB.arr[j].split('|');
                    var eleB = document.getElementById(newArr1[0]);
                    var xB = parseInt(newArr1[2]);
                    var yB = parseInt(newArr1[1]);
                    var xCheck = xB > xFS && xB < xFE;
                    var yCheck = yB > yFS && yB < yFE;
    
                    if (xCheck && yCheck) {
                        objF.arr.splice(i, 1);
                        eleF.parentNode.removeChild(eleF);
                        objB.arr.splice(j, 1);
                        eleB.parentNode.removeChild(eleB);
                    }
                }
            }
    
        }, 10)
    
    
    
    
    
    
    
    </script>
    
    
    </html>



    中间的图片 b

    图bg

    图foe

    图me

  • 相关阅读:
    C#网络编程之Http请求
    使用 pdf.js 在网页中加载 pdf 文件
    程序员转型技术管理,这几本书不能错过
    HTTPS小结 、TSL、SSL
    clipboard 在 vue 项目中,on 事件监听回调多次执行
    Vue 引入 .md 文件,解析markdown语法
    Vue cli4.0 代理配置
    npm publish 一直报错 404
    JSON 多层对象获取键值
    Tomcat8配置Https协议,Tomcat配置Https安全访问,Tomcat Https配置
  • 原文地址:https://www.cnblogs.com/jiumen/p/11423423.html
Copyright © 2011-2022 走看看