美文网首页
Canvas_鼠标移动炫彩小球

Canvas_鼠标移动炫彩小球

作者: 横冲直撞666 | 来源:发表于2017-04-06 19:11 被阅读39次

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <title>canvas</title>

    <style type="text/css">

        *{

            margin: 0;

            padding: 0;

        }

        img{

            border:0;

        }

        ol, ul ,li{list-style: none;}

        canvas{

            border: 1px solid #000;

        }

    </style>

</head>

<body>

    <canvas id="mycanvas" width="1000" height="600"></canvas>

    <script type="text/javascript">

 

        var mycanvas = document.getElementById("mycanvas");

        var ctx = mycanvas.getContext("2d");

        //圆形类

         function Circle(x,y,r,color){

            this.x = x;

            this.y = y;

            this.r = r;

            // 颜色的取值范围

            this.color = "rgb("+ (parseInt(Math.random() * 240 ) + 9) + ","+ (parseInt(Math.random() * 220 )+18) +",203)";

 

            //随机方向

            this.dx = Math.random() * 12 - 7;

            this.dy = Math.random() * 12 - 7;

            //往数组中push自己

            circleArr.push(this);

         }

 

         //渲染

         Circle.prototype.render = function(){

            //新建一条路径

            ctx.beginPath();

            //创建一个圆

            ctx.arc(this.x, this.y, this.r, 0, Math.PI*2, true);

            //设置样式颜色

            ctx.fillStyle = this.color;

            //通过填充路径的内容区域生成实心的图形

            ctx.fill();

         }

 

         //更新

         Circle.prototype.update = function(){

            this.x += this.dx;

            this.y += this.dy;

            this.r--;

            if(this.r < 0){

                for (var i = 0; i < circleArr.length; i++) {

                    if (circleArr[i] === this) {

                        circleArr.splice(i,1);

                    };

                }

                return false;

            }

            return true;

         }

         //创建一个数组

         var circleArr = [];

 

         //鼠标移动事件

         mycanvas.onmousemove = function(event){

            new Circle(event.clientX,event.clientY,30,"orange");

         }

 

         //设置定时器每20毫秒更新和渲染

         setInterval(function(){

            ctx.clearRect(0, 0, 1000, 600)

            for (var i = 0; i < circleArr.length; i++) {

                circleArr[i].update() && circleArr[i].render();

            };

         },20);

 

 

    </script>

</body>

</html>

感兴趣的朋友可以加我好友一起讨论

相关文章

  • Canvas_鼠标移动炫彩小球

    canvas *{ margin: 0; padding: 0; } img{ ...

  • 如何用JavaScript写个炫彩小球页面?

    先看看效果:页面可以不断自动产生大小、颜色不一的炫彩小球,一段时间会自动消失;此外,鼠标移动也可以产生小球,也会自...

  • 实现小球在弹射前的拉伸特效和动态障碍物特效

    当前我们实现小球弹射时,会先用鼠标点击小球,然后移动鼠标,当松开鼠标时,小球会弹射向鼠标松开的位置。我们按住小球的...

  • JS实现一连串元素跟随鼠标效果

    思路 当鼠标移动时,获取到鼠标的位置,将第一个小球的位置设置为鼠标的位置,然后将剩余小球都设为其前一个小球的位置,...

  • 鼠标酷炫特效--小球

    实现效果: 首先要引入vue.js html代码: 调节小球大小、自定义绘制图代码: 来源:https://blo...

  • day12-作业

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

  • web前端-五彩小球效果

    首先我们来看下效果图, 主要的还是思想 Demo地址 接下来我们说下原理 鼠标移动的时候在鼠标位置创建小球, 对小...

  • 小猫追球(Scratch编程)

    今天给大家分享一个“小猫追球”游戏 一、 游戏规则 1, 点击绿旗开始游戏2, 小球跟随鼠标移动3, 小猫...

  • 射线拓展

    小球撞击砖块,小球和砖块都必须有碰撞体,当小球撞击到砖块之后,小球消失,在小球原本位置再生成一个小球,点击鼠标继续...

  • 前端(动画)

    鼠标移动前 效果: 鼠标移动后 效果:

网友评论

      本文标题:Canvas_鼠标移动炫彩小球

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