canvas做的动态生成泡泡游戏

实现效果:出现随机位置随机大小随机颜色的圆

225740_Bmu4_3772683.png

body:<canvas id="bubble" ></canvas>

js:var canvas=document.getElementById("bubble");
        var w=window.innerWidth;//canvas窗口和浏览器一样 
        var h=window.innerWidth;
        canvas.width=w;
        canvas.height=h;
        window.οnresize=function(){//窗口大小发生变化
            w=window.innerWidth;
            h=window.innerWidth;
            canvas.width=w;
            canvas.height=h;
        }

      var cancon=canvas.getContext("2d");//2d平面

      function Bubble(){};//构造类

     function random(min,max){
           return Math.random()*(max-min)+min;

        }//random函数
        var  colorarry=["#e08031","#c7ceb2","#199475","#0b6e48","#044d22"]//4种颜色

            Bubble.prototype= {//构造函数
                init:function(){//初始化
                this.x=random(0,w);
                this.y=random(0,h);
                this.r=random(0,3);
                this.xr=random(-1,1);//x移动的范围
                this.yr=random(-1,1);//y方向移动的范围
                this.D=50;//在50px范围
                this.color=colorarry[Math.floor(random(0,5))];//在四种颜色里随机取,颜色的搭配可以参考www.peise.net
            },
            draw:function(){
                cancon.beginPath();//提笔重画
                cancon.fillStyle=this.color;//圆形的颜色
                cancon.arc(this.x,this.y,this.r,0,2*Math.PI);//圆形的参数
                cancon.fill();//实心填满  stroke:不实心填满

            },
            update:function(){//更新小圆形泡泡
                this.x+=this.xr;
                this.y+=this.yr;
                if(this.x-this.r<0 || this.x+this.r>w){
                    this.xr=-this.xr;

                }//如果碰到边缘,则反弹回去,通过变化的值取反来操作
                if(this.y-this.r<0 || this.y+this.r>h){
                    this.yr=-this.yr;
                }

                //算出鼠标的位置与当前小泡泡的x y轴距离
                this.XD=(positionX-this.x)<0?-(positionX-this.x):(positionX-this.x);
                this.YD=(positionY-this.y)<0?-(positionY-this.y):(positionY-this.y);
                if(this.XD<this.D&&this.YD<this.D){
                    this.r+=1;

                }

                 //如果距离小于定义的范围50,小圆形泡泡就膨胀
                else if(this.r>4&&this.XD>this.D&&this.YD>this.D){
                    this.r-=1;
                }

               //如果距离大于定义值且半径大于4 ,就说明不在范围内,就缩小
                this.draw();//更新完必须再画一次
            }
        };

       

        var bubblearry=[];//定义一个数组存放泡泡
        function create(){//生成泡泡的过程
            var bubble=new Bubble();
            bubble.init();
            bubble.draw();
            bubblearry.push(bubble);

        }

     for(var i=0;i<1000;i++){//生成1000个泡泡
            create();
        }
        setInterval(function(){
            cancon.clearRect(0,0,w,h);//清除上一个的,实现动态变化的效果
            for(var b of bubblearry){
                b.update();//遍历

            }
        },1000/60);//
        var positionX,positionY;

        //鼠标位置

        canvas.οnmοusemοve=function( event){
            var ev=ev || event;//浏览器兼容性
            positionX=ev.clientX;
            positionY=ev.clientY;
        }

转载于:https://my.oschina.net/u/3772683/blog/1618816

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值