美文网首页
Canvas<基础学习_01(绘制小球)>

Canvas<基础学习_01(绘制小球)>

作者: 誰在花里胡哨 | 来源:发表于2020-03-03 11:18 被阅读0次
效果图:
canvas_1.gif

废话不多说,代码备注已经很详细了

代码如下:
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        canvas {
            display: block;
            background: #dbdbdb;
            color: #1aa196;
        }
    </style>
</head>

<body>
    <canvas id="canvas"></canvas>
</body>
<script>
    let w = window.innerWidth;
    let h = window.innerHeight;
    let canvas = document.getElementById("canvas");
    let ctx = canvas.getContext("2d");
    let ballArray = []
    let colorArray = ["#1ec9ba", "#2febdb", "#53f0e3", "#b3f3ee", "#1aa196"]
    canvas.width = w;
    canvas.height = h;
    document.addEventListener("mousedown", function (e) {
        init(e.clientX, e.clientY)
    })
    // 随机生成一个 lower ~ upper 的数
    function randomIntFronRange(lower, upper) {
        return Math.random() * (upper - lower) + lower;
    };

    //创建小球的方法(相关样式,起始坐标位置等)
    function init(b_x, b_y) {
        let x = b_x;
        let y = b_y;
        let cX = randomIntFronRange(-5, 5);
        let cY = randomIntFronRange(-5, 5);
        let radius = 10;
        let color = colorArray[Math.floor(Math.random() * colorArray.length)];
        ballArray.push(new createBall(x, y, cX, cY, radius, color))
    }

    //根据鼠标点击创建一个小球的对应对象属性
    function createBall(x, y, cX, cY, radius, color) {
        this.x = x;
        this.y = y;
        this.radius = radius;
        //x,y轴偏移量
        this.cX = cX;
        this.cY = cY;
        //绘制一个圆球,并填充颜色
        this.draw = function () {
            ctx.beginPath();
            // 定义绘制圆点的背景色
            ctx.fillStyle = color;

            // 定义边框颜色
            // ctx.strokeStyle = 'white'

            // 定义边框宽度
            // ctx.lineWidth = 0.2;

            // // 阴影
            // ctx.shadowOffsetX = 15; // 阴影Y轴偏移
            // ctx.shadowOffsetY = 15; // 阴影X轴偏移
            ctx.shadowBlur = 14; // 模糊尺寸
            ctx.shadowColor = color;

            //绘制圆点的坐标,圆的半径,圆心位置,圆(Math.PI * 2为圆形,否则为扇形)
            ctx.arc(this.x, this.y, this.radius, 0, 2 * Math.PI);
            ctx.fill();
            ctx.closePath();
        }

        //实时更新动画
        this.update = function () {
            // 临界值判断 ,超出临界值时偏移量取反
            if (this.y + this.radius > h || this.y - this.radius <= 0) {
                this.cY = -this.cY;
            }
            if (this.x + this.radius > w || this.x - this.radius <= 0) {
                this.cX = -this.cX;
            }
            
            this.x += this.cX;
            this.y += this.cY;
            this.draw()
        }
    }

    //创建小球的移动
    function moveBall() {
        window.requestAnimationFrame(moveBall)
        //清除每个小球的运动痕迹
        ctx.clearRect(0, 0, w, h);
        for (const n of ballArray) {
            n.update()
        }
    }
    moveBall()
</script>

</html>

相关文章

  • Canvas<基础学习_01(绘制小球)>

    效果图: 废话不多说,代码备注已经很详细了 代码如下:

  • android绘图之Canvas基础(2)

    Android 绘图学习 1 Canvas 基础 Canvas画布,用于绘制出各种形状配合画布的变幻操作可以绘制出...

  • canvas基础学习笔记(二)

    基于canvas基础学习笔记(一)的学习,首先从绘制一片星空开始: 一、星空绘制 二、图形变换 位移:transl...

  • Android自定义View之draw系方法

    Canvas是Android绘制的基础,onDraw方法提供Canvas类来帮助开发者绘制内容,为了加强自己的印象...

  • 2019-10-08

    一:canvas的常用方法 二:canvas基础图形详解 绘制颜色 绘制点 绘制图形前先初始化一个画笔 绘制一个点...

  • Android canvas 基础图形详解

    一:canvas的常用方法 二:canvas基础图形详解 绘制颜色 绘制点 绘制图形前先初始化一个画笔 绘制一个点...

  • 跟随球实现

    在屏幕上绘制一个小球,可以跟随手指移动 练习心得 View的回调方法onDraw(Canvas)负责在画布上绘制v...

  • Android 自定义View(学习 整理基础用法)

    学习资料 始于 onDraw(Canvas canvas) 1、canvas.drawXxx() 直接绘制所需图形...

  • 第十一周第三天笔记之canvas知识

    1 canvas知识 1.1 canvas基础知识 canvas绘制线,矩形,描边,填充,使用图片注意点:canv...

  • canvas进阶

    一、文字基准线: 我们在canvas基础中学习了canvas文字的绘制,现在我们把文字对齐的属性弄清楚:首先文字定...

网友评论

      本文标题:Canvas<基础学习_01(绘制小球)>

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