基于JavaScript实现除夕烟花秀与随机祝福语

基于JavaScript实现除夕烟花秀与随机祝福语需要按照以下步骤进行。

1. 设计烟花特效

使用canvas绘图,生成烟花特效效果的实现流程如下:

  1. 在画布中随机生成烟花的起点x和y坐标
  2. 烟花运动轨迹的设计可以使用二次贝塞尔曲线,设计一个终点位置,并为每个粒子产生逐渐减小的速度,模拟爆炸效果,并使用rgba透明度渐变
  3. 根据设定的爆炸半径、及颜色变化规律,生成烟花爆炸特效,并用之前的速度逐渐减小粒子大小,实现动效。最后使用setTimeout调用函数多次循环执行实现烟花的频繁爆炸效果。

这样就能够实现火花特效的设计。

2. 设计祝福语语句

可以在一个数组中存放不同的随机祝福语,随即取出,形成随机展示。确定大量祝福语句的关键是要确保语句都是具有完整的结构、优美的语言,以及展现出新年的祝福和祝福语的特殊性。

3. 绑定事件,引入应用

使用window.load,在网页载入后,将canvas添加到DOM中,在页面上绑定“打开烟花”按钮。当按钮点击一次时,在canvas上生成随机位置的烟花,并随机展示祝福语,整个烟花效果随着创造,展示多次。

示例一:绘制烟花特效

示例代码如下:

var canvas = document.getElementById('canvas');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
var ctx = canvas.getContext('2d');
var fireworks = [];

function drawFireworks() {
    var fireworks_num = 5;
    while (fireworks_num --) {
        fireworks.push(new Firework());
    }
    requestAnimationFrame(drawFireworks);
}
drawFireworks();

function Firework() {
    this.vx = Math.random() * 5 - 2.5;
    this.vy = Math.random() * 5 - 2.5;
    this.gravity = 0.03;
    this.opacity = 1;
    this.trailOpacity = 0.7;
    this.hue = Math.floor(Math.random() * 360);
    this.color = 'hsla(' + this.hue + ',100%,50%, ' + this.opacity + ')';
    this.trailLength = 10;
    this.x = canvas.width / 2;
    this.y = canvas.height;
    this.trail = [];
    this.trailMaxNum = 20;
    this.radius = 6;
    this.explode = false;

    this.update = function () {
        if (!this.explode) {
            this.x += this.vx;
            this.vy += this.gravity;
            this.y += this.vy;
            this.opacity -= 0.006;
            this.color = 'hsla(' + this.hue + ',100%,50%, ' + this.opacity + ')';
            this.trail.push([this.x, this.y]);
            if (this.trail.length > this.trailMaxNum || this.opacity < 0.1) this.explode = true;
        } else {
            if (this.radius < 6) this.radius += 0.2;
            else {
                ctx.globalCompositeOperation = 'lighter';
                for (var i = 0; i < 80; i ++) {
                    ctx.beginPath();
                    ctx.fillStyle = 'hsla(' + this.hue + ',100%,' + Math.floor(Math.random()*60+20) + '%,' + this.opacity + ')';
                    ctx.arc(this.x, this.y, this.radius, Math.PI * 2, false);
                    ctx.fill();
                }
                ctx.globalCompositeOperation = 'source-over';
                this.trail = [];
                this.color = 'hsla(' + this.hue + ',100%,50%,' + this.trailOpacity + ')';
                this.radius = 0;
                this.explode = false;
                this.opacity = 1;
            }
        }
        this.draw();
    };

    this.draw = function () {
        if (!this.explode) {
            ctx.beginPath();
            ctx.fillStyle = this.color;
            ctx.arc(this.x, this.y, this.radius, Math.PI * 2, false);
            ctx.fill();
            if (this.trail.length) {
                for (var i = 0; i < this.trail.length; i ++) {
                    ctx.globalAlpha = i / this.trail.length;
                    ctx.beginPath();
                    ctx.fillStyle = 'hsla(' + this.hue + ',100%,50%,' + this.trailOpacity + ')';
                    ctx.arc(this.trail[i][0], this.trail[i][1], this.radius/2, Math.PI * 2, false);
                    ctx.fill();
                }
            }
        }
    };
}

例如,上述代码中,使用canvas实时实现加入火花效果,每秒限制烟花的个数,等待着调用,生成效果十分炫酷。

示例二:生成祝福语句

示例代码如下:

var wishes = [
    "祝你猪事顺利,阖家欢乐,荧屏高清无码,收入高薪无忧,财运亨通,天天好心情,开心满满。",
    "祝福你快快乐乐过大年,工作顺利,事业有成,心想事成,身体健康,阖家幸福,财源广进!",
    "祝您猪年心想事成、身体倍棒、收入倍增、家有金童玉女、和美永存,财神来时宜作戏,新年兆头助您飞,祝新春快乐!",
    "愿猪年健康平安,愿万事顺遂风和日丽,愿所有努力都有回报,愿财运亨通美好生活随行。",
    "祝大千世界好开心,金猪送福如意非;快乐满怀事事圆,瑞猪报喜幸福满。祝您家庭和谐,工作顺利,身体健康,合家幸福!"
];

function randomWish() {
    var index = Math.floor(Math.random() * wishes.length);
    return wishes[index];
}

例如,使用数组存储大量的祝福语,通过随机,来获得新的祝福语句。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于JavaScript实现除夕烟花秀与随机祝福语 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • HTML (css样式规范)必看篇

    HTML (CSS样式规范)必看攻略 在编写 HTML 时,合理的应用 CSS 样式规范,既可以让页面更美观,也可以增加页面的可维护性。本篇攻略将为您介绍 HTML 中常用的 CSS 样式规范。 内联样式 内联样式是指直接在 HTML 元素内部使用 style 属性的方式定义 CSS 样式: <p style="color:red"…

    css 2023年6月9日
    00
  • js canvas实现红包照片效果

    下面我将详细讲解“js canvas实现红包照片效果”的完整攻略。 1. 什么是”js canvas实现红包照片效果”? “js canvas实现红包照片效果”是一种前端技术,通过使用HTML5中的Canvas元素和JavaScript,可以实现在网页中生成一张红包照片,用户可以通过抽取红包照片来获取奖励。 2. 实现步骤 步骤一:创建HTML文件并添加Ca…

    css 2023年6月11日
    00
  • jQuery 表格隔行变色代码[修正注释版]

    当我们需要在网页中展示数据表格时,隔行变色可以更直观地展示不同的数据行。使用jQuery,我们可以很方便地实现表格隔行变色的效果。下面我们来详细讲解“jQuery 表格隔行变色代码[修正注释版]”的完整攻略。 1. 准备工作 首先要准备好需要隔行变色的数据表格,以及引入jQuery库。 <!DOCTYPE html> <html> &…

    css 2023年6月9日
    00
  • 30分钟快速掌握Bootstrap框架

    30分钟快速掌握Bootstrap框架攻略 Bootstrap是一款开源的前端框架,它提供了许多响应式设计、现成的UI组件、JavaScript插件等功能,使得我们能够快速地构建具有响应式特性的网站或Web应用程序。接下来我们将讲解如何在短短的30分钟内快速掌握Bootstrap框架。 步骤1:引入Bootstrap文件 首先,我们需要将Bootstrap的…

    css 2023年6月10日
    00
  • jQuery制作全屏宽度固定高度轮播图(实例讲解)

    下面我会详细讲解“jQuery制作全屏宽度固定高度轮播图(实例讲解)”的完整攻略。 1. 确定轮播图的基本结构 首先,我们需要确定轮播图的基本结构。本例中,我们使用ul标签将图片放在同一个列表内,并设置其宽度和高度。具体代码如下: <div class="slider-wrapper"> <ul class="…

    css 2023年6月10日
    00
  • 在HTML中引入CSS的几种方式介绍

    在HTML中,引入CSS样式网页可以更好的装扮和展示,让用户获得更好的浏览体验。下面我们将详细讲解在HTML中引入CSS的几种方式。 内联样式 内联样式是直接将样式写在HTML标签中,使用style属性。内联样式的优点是方便快捷,可以快速地为单个元素定制样式,然而内联样式的劣势是使得HTML文档变得杂乱无章,不利于维护和修改。 <!DOCTYPE ht…

    css 2023年6月9日
    00
  • 利用JS实现加减简易计算器

    实现一个加减简易计算器,可以使用HTML、CSS和JavaScript。下面是具体的攻略: 需求分析 首先需要明确需要实现什么功能,即需求分析。本次项目需要实现一个简易的加减计算器,能够对用户输入的两个数字进行加减运算,并输出结果。 HTML框架 接下来,需要构建HTML框架。在body标签内添加一个form元素,并设置其提交方法为javascript:vo…

    css 2023年6月10日
    00
  • CSS制作边框效果的技巧总结

    关于“CSS制作边框效果的技巧总结”的完整攻略,我从以下几个方面进行详细讲解。 一、CSS边框效果常用属性 在制作边框效果时,我们需要使用到CSS中的以下几个常用属性: border:设置元素的边框宽度、样式和颜色。 border-radius:设置元素的圆角效果。 box-shadow:设置元素的阴影效果。 二、制作实线边框 下面我将给出制作实线边框的两个…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部