博客列表 >鼠标滑动泡泡

鼠标滑动泡泡

虞者自愚的博客
虞者自愚的博客原创
2018年05月08日 17:24:18809浏览

知识点

canvas 的宽高设置

js的使用

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>鼠标滑动泡泡</title>
    <meta name="keywords" content="鼠标滑动泡泡">
    <meta name="description" content="5月8日,前端复习">
    <style type="text/css">
        body {margin:0;}
        #canvas {
            /* background-color:#fff; */
            background-color:#222;
            display:block;

        }
    </style>
</head>
<body>
<canvas id="canvas"></canvas>
<script>
var canvas = document.querySelector('#canvas');//选中目标元素
var ctx = canvas.getContext('2d');//生成绘制环境并返回
var ww,hh;
var balllist = [];
function init(){ //浏览器显示页面初始化
    canvas.width = ww = window.innerWidth;
    canvas.height = hh = window.innerHeight;
}
window.onresize = init;  //添加浏览器调整监控事件
init();

function Ball(x,y){
    this.x = x;
    this.y = y;
    this.r = 50;
    this.vx = Math.random()*6-3;
    this.vy = Math.random()*6-3;
    this.c = '#'+Math.floor(Math.random()*1000000);
}

Ball.prototype={
    draw:function(ctx){
        ctx.beginPath();
        ctx.arc(this.x,this.y,this.r,0,Math.PI*2,false);  //画圆描述画法  X坐标 Y坐标 R半径 圆的起始点 绘制旋转半径,绘制方形
        ctx.fillStyle = this.c;
        // ctx.globalCompositeOperation = 'xor';  //使用异或操作对源图像与目标图像进行组合
        ctx.globalCompositeOperation = 'lighter'; //显示源图像 + 目标图像
        ctx.fill();
    },


    update:function(){
        this.x+=this.vx;
        this.y+=this.vy;
        this.vy*=0.99;
        this.vx*=0.99;
        this.r-=0.3;
        if(this.r < 0){
            this.r = 0;
        }
    }
}

canvas.addEventListener('mousemove',function(e){
    balllist.push(new Ball(e.clientX,e.clientY))//鼠标移动 绘制球的坐标
})

function render(){
    ctx.clearRect(0,0,ww,hh);
    balllist.forEach(function(ball){
        ball.draw(ctx);
        ball.update();
    })
//判断半径小于0的时候,清除/回收
    for(var i=0;i<balllist.length;i++){
        if(balllist[i].r==0){
            balllist.splice(i,1);
        }
    }
    requestAnimationFrame(render);
}
render();
</script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议
小威2018-05-08 18:29:071楼
好炫酷呀!这个我之前用FLASH实现过,现在用JS也能实现 好神奇 收藏!!