博主信息
博文 42
粉丝 3
评论 2
访问量 47619
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
鼠标滑动泡泡
虞者自愚的博客
原创
986人浏览过

知识点

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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
1条评论
小威 2018-05-08 18:29:07
好炫酷呀!这个我之前用FLASH实现过,现在用JS也能实现 好神奇 收藏!!
1楼
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学