使用HTML5 Canvas动画:创建动态星空和触手效果

10,415次阅读
没有评论

共计 1795 个字符,预计需要花费 5 分钟才能阅读完成。

前言

HTML5 Canvas 是一个强大的工具,它允许我们在网页上绘制图形和动画。在项目中,将使用 Canvas 创建一个动态的星空背景和一组响应鼠标移动的触手动画效果。

实现效果

使用 HTML5 Canvas 动画:创建动态星空和触手效果
使用 HTML5 Canvas 动画:创建动态星空和触手效果

一、HTML

首先,我们需要设置 HTML 结构。这包括一个 canvas 元素,它将作为我们的绘图表面。

canvas id="canvas">/canvas>

二、CSS 样式

接下来,我们添加一些 CSS 来确保 canvas 元素覆盖整个浏览器窗口。

body {
    margin: 0;
    padding: 0;
    overflow: hidden;
    background: #000;
}
canvas {
    display: block;
    background: #000;
}

JavaScript

1. 初始化 Canvas

代码如下(示例):

function initializeCanvas(elemid) {
    let canvas = document.getElementById(elemid);
    let context = canvas.getContext('2d');
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;
    createStars(context, canvas.width, canvas.height);
    return { context: context, canvas: canvas };
}

2. 创建星空背景

使用 createStars 函数在 Canvas 上随机绘制小点,模拟星空。
代码如下(示例):

function createStars(context, width, height) {
    const stars = 500;
    for (let i = 0; i  stars; i++) {
        const x = Math.random() * width;
        const y = Math.random() * height;
        const radius = Math.random() * 2;
        context.beginPath();
        context.arc(x, y, radius, 0, Math.PI * 2, false);
        context.fillStyle = 'white';
        context.fill();
    }
}

3. 定义触手

我们用 Segment 类来表示触手。

class Segment {
    constructor(parent, length, angle, isFirst) {
        this.position = isFirst ? { x: parent.x, y: parent.y } : { x: parent.nextPosition.x, y: parent.nextPosition.y };
        this.length = length;
        this.angle = angle;
        this.nextPosition = {
            x: this.position.x + length * Math.cos(this.angle),
            y: this.position.y + length * Math.sin(this.angle)
        };
    }
    
}

4. 实现触手的动态效果

class Tentacle {
    constructor(x, y, length, segments, angle) {
        this.x = x;
        this.y = y;
        this.length = length;
        this.segments = segments;
        
    }
    updatePosition(lastTarget, target) {
        
    }
    drawSegments(target) {
        
    }
    drawBase(target) {
        
    }
}

5. 实现交互功能

通过监听 mousemove 和 mouseleave 事件来添加鼠标交互功能,实现触手随着鼠标动。

canvas.addEventListener("mousemove", function(e) {
    mouse.x = e.pageX - this.offsetLeft;
    mouse.y = e.pageY - this.offsetTop;
}, false);

canvas.addEventListener("mouseleave", function(e) {
    mouse.x = false;
    mouse.y = false;
});

完整代码自取

网盘自取
https://pan.xunlei.com/s/VO739R4_yu9Yym5HjH5X7JnAA1?pwd=uifw
仅供交流学习使用。

原文地址: 使用 HTML5 Canvas 动画:创建动态星空和触手效果

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-10-29发表,共计1795字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)