美文网首页
js实现小球碰撞

js实现小球碰撞

作者: 弦生_a3a3 | 来源:发表于2020-01-11 23:36 被阅读0次

<!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>

</head>

<style>

    *{

        margin: 0;

        padding: 0;

    }

    html,body{

        width: 100%;

        height: 100%;

    }

    #wrap{

        width: 100%;

        height: 100%;

        background: linear-gradient(to left,skyblue,rgb(226, 211, 126),pink);

    }

    .boll{

        position: absolute;

    }

</style>

<body>

<div id="wrap">

</div>

<script>

window.onload=function(){

    // 仿照jq建一个工厂符

    let $=e=>{return document.querySelector(e)};

    // 建一个自定义随机数函数

    function randFn(min,max){

        return parseInt(Math.random()*(max-min)+min);

    }

    let wrap=$('#wrap');

    // 这里写函数内部球的一些样式随机

    function Boll(wh){

        var wh=randFn(20,50);

        // 宽度随机20-50之间

        this.width=wh;

        // 高度随机20-50之间

        this.height=wh;

        // 距离顶部随机0-页面最大高度减去自身高度值,加上单位px

        this.top=randFn(0,document.body.offsetHeight -wh)+'px';

        // 距离左部随机0-页面最大宽度减去自身宽度值,加上单位px

        this.left=randFn(0,document.body.offsetWidth-wh)+'px';

        // 随机一个0-自身高度的边框圆润

        this.borderR=randFn(0,this.height);

        // 边框影音随机

        this.border=`0 0 ${randFn(1,10)}px ${randFn(1,20)}px rbg(${randFn(0,255)},${randFn(0,255)},${randFn(0,255)})`

        // 背景色随机

        this.color='rgba('+randFn(0,255)+','+randFn(0,255)+','+randFn(0,255)+','+Math.random()+')';

        // 移动速度X轴随机

        this.speedX=randFn(-10,10);

        // 移动速度Y轴随机

        this.speedY=randFn(-10,10);

        // 给函数div创造一个html中的div

        this.div=document.createElement('div');

    }

    Boll.prototype.draw=function(){

        // 给div加上类名

        this.div.className = 'boll';

        // 加上随机宽度值

        this.div.style.width=this.width+'px';

        // 加上随机高度值

        this.div.style.height=this.height+'px';

        console.log(this.border)

        // 加上随机阴影值

        this.div.style.boxShadow=this.border;

        // 加上随机top值

        this.div.style.top=this.top;

        // 加上随机left值

        this.div.style.left=this.left;

        console.log(this.borderR)

        // 加上随机圆角值

        this.div.style['border-radius']=this.borderR+'px';

        console.log(this.color)

        // 加上随机背景色值

        this.div.style['background']=this.color;

        // 将当前创造的div添加到wrap当中去

        wrap.appendChild(this.div);

    }

    Boll.prototype.run=function(){

        // 因为此时的在setInterval中的this指向window所以要把this缓存起来,赋一个值

        var self=this;

        setInterval(function(){

            var tag=self.div;

            // boll的左边距+boll宽度值>wrap的宽度值或者boll的左边距值<0的时候 boll的速度开始倒退

            if(tag.offsetLeft + tag.offsetWidth > wrap.offsetWidth || tag.offsetLeft < 0){

                self.speedX*=-1;

            }

            if(tag.offsetTop + tag.offsetHeight > wrap.offsetHeight || tag.offsetTop < 0){

                self.speedY*=-1;

            }

            // boll的left值=自身宽度值+刚刚的判断值+‘px’;

            tag.style.left = tag.offsetLeft + self.speedX + 'px';

        tag.style.top = tag.offsetTop + self.speedY + 'px';

        },10)

    }

    // 循环遍历div个数

    for(let i=1;i<=10;i++){

        // 用‘new关键字创建实例’来访问prototype属性中对应的属性和方法

        var f=new Boll();

        f.draw();

        f.run()

    }

    // f.run()

}

</script>

</body>

</html>

——————————————————————写的不好,仅供参考

相关文章

  • js实现小球碰撞

    Document *{ margin:0; padding:0; } html,b...

  • day12-作业

    实现鼠标点击屏幕产生小球,小球自动移动,与屏幕碰撞会反弹。小球之间碰撞,会随机吃掉。 定义部分颜色的模块

  • JS实现两个小球碰撞

    下面是我写的纯代码,有注释,可以直接在Google上面运行 CSS部分: body{ position: r...

  • 实现小球碰撞动画

    前言 小球碰撞的动画效果早在17年做一个大屏项目的时候就用过,最近的项目又有这个需求,于是乎把这个过程总结一下,省...

  • Java 小球碰撞

    小球碰撞的关键是 判断小球是否碰撞过:1.当两小球间距小于小球直径时发生碰撞。2.当小球碰到边缘时发生碰撞。

  • day-11-pygame的应用

    小球碰撞,大球碰击小球,小球消失

  • 小球碰撞

  • 2018-09-04 Day12-pygame小游戏

    1、小球碰撞 2、接球游戏 3、大球吃小球

  • 构造函数&&类--canvas小球碰撞

    1. 构造函数 canvas小球碰撞 2. 类 canvas小球碰撞 有上可以看出,用类写面向对象的方法,...

  • pygame小球碰撞

    import pygameimport ymj_colorfrom random import randint""...

网友评论

      本文标题:js实现小球碰撞

      本文链接:https://www.haomeiwen.com/subject/tlabactx.html