


How to make black background with special effects debris fireworks in canvas
This time I will show you how to make crumb fireworks with a black background and special effects using canvas. How to make crumb fireworks with a black background and special effects using canvas. What are the precautions?. Here is a practical case. Let’s take a look. take a look.
<canvas id="cas" style=" background-color :rgba(0,5,24,1)" width="1235" height="680">浏览器不支持canvas</canvas><div class="city"> <img src="city.png" alt=""></div><img src="moon.png" alt="" id="moon" style=" visibility : hidden;"><div style="display:none"> <div class="shape">新年快乐</div> <div class="shape">阖家欢乐</div> <div class="shape">万事如意</div> <div class="shape">心想事成</div> </div>
css
body { margin: 0; padding: 0; overflow: hidden;
}.city { width: 100%; position: fixed; bottom: 0px; z- index: 100;
}.city img { width: 100%;
}
js
var canvas = document.getElementById("cas");var ocas = document.createElement("canvas");var octx = ocas.getContext("2d");var ctx = canvas.getContext("2d"); ocas.width = canvas.width = window.innerWidth; ocas.height = canvas.height = window.innerHeight;var bigbooms = [];window.onload = function () { initAnimate() }function initAnimate() { drawBg(); lastTime = new Date(); animate(); }var lastTime;function animate() { ctx.save(); ctx.fillStyle = "rgba(0,5,24,0.1)"; ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.restore(); var newTime = new Date(); if (newTime - lastTime > 500 + (window.innerHeight - 767) / 2) { var random = Math.random() * 100 > 2 ? true : false; var x = getRandom(canvas.width / 5, canvas.width * 4 / 5); var y = getRandom(50, 200); if (random) { var bigboom = new Boom(getRandom(canvas.width / 3, canvas.width * 2 / 3), 2, "#FFF", { x: x, y: y }); bigbooms.push(bigboom) } else { var bigboom = new Boom(getRandom(canvas.width / 3, canvas.width * 2 / 3), 2, "#FFF", { x: canvas.width / 2, y: 200 }, document.querySelectorAll(".shape")[parseInt(getRandom(0, document.querySelectorAll( ".shape").length))]); bigbooms.push(bigboom) } lastTime = newTime; } stars.foreach(function () { this.paint(); }) drawMoon(); bigbooms.foreach(function (index) { var that = this; if (!this.dead) { this._move(); this._drawLight(); } else { this.booms.foreach(function (index) { if (!this.dead) { this.moveTo(index); } else if (index === that.booms.length - 1) { bigbooms[bigbooms.indexOf(that)] = null; } }) } }); raf(animate); }function drawMoon() { var moon = document.getElementById("moon"); var centerX = canvas.width - 200, centerY = 100, width = 80; if (moon.complete) { ctx.drawImage(moon, centerX, centerY, width, width) } else { moon.onload = function () { ctx.drawImage(moon, centerX, centerY, width, width) } } var index = 0; for (var i = 0; i < 10; i++) { ctx.save(); ctx.beginPath(); ctx.arc(centerX + width / 2, centerY + width / 2, width / 2 + index, 0, 2 * Math.PI); ctx.fillStyle = "rgba(240,219,120,0.005)"; index += 2; ctx.fill(); ctx.restore(); } }Array.prototype.foreach = function (callback) { for (var i = 0; i < this.length; i++) { if (this[i] !== null) callback.apply(this[i], [i]) } }var raf = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) { window.setTimeout(callback, 1000 / 60); }; canvas.onclick = function () { var x = event.clientX; var y = event.clientY; var bigboom = new Boom(getRandom(canvas.width / 3, canvas.width * 2 / 3), 2, "#FFF", { x: x, y: y }); bigbooms.push(bigboom) }var Boom = function (x, r, c, boomArea, shape) { this.booms = []; this.x = x; this.y = (canvas.height + r); this.r = r; this.c = c; this.shape = shape || false; this.boomArea = boomArea; this.theta = 0; this.dead = false; this.ba = parseInt(getRandom(80, 200)); } Boom.prototype = { _paint: function () { ctx.save(); ctx.beginPath(); ctx.arc(this.x, this.y, this.r, 0, 2 * Math.PI); ctx.fillStyle = this.c; ctx.fill(); ctx.restore(); }, _move: function () { var dx = this.boomArea.x - this.x, dy = this.boomArea.y - this.y; this.x = this.x + dx * 0.01; this.y = this.y + dy * 0.01; if (Math.abs(dx) <= this.ba && Math.abs(dy) <= this.ba) { if (this.shape) { this._shapBoom(); } else this._boom(); this.dead = true; } else { this._paint(); } }, _drawLight: function () { ctx.save(); ctx.fillStyle = "rgba(255,228,150,0.3)"; ctx.beginPath(); ctx.arc(this.x, this.y, this.r + 3 * Math.random() + 1, 0, 2 * Math.PI); ctx.fill(); ctx.restore(); }, _boom: function () { var fragNum = getRandom(30, 200); var style = getRandom(0, 10) >= 5 ? 1 : 2; var color; if (style === 1) { color = { a: parseInt(getRandom(128, 255)), b: parseInt(getRandom(128, 255)), c: parseInt(getRandom(128, 255)) } } var fanwei = parseInt(getRandom(300, 400)); for (var i = 0; i < fragNum; i++) { if (style === 2) { color = { a: parseInt(getRandom(128, 255)), b: parseInt(getRandom(128, 255)), c: parseInt(getRandom(128, 255)) } } var a = getRandom(-Math.PI, Math.PI); var x = getRandom(0, fanwei) * Math.cos(a) + this.x; var y = getRandom(0, fanwei) * Math.sin(a) + this.y; var radius = getRandom(0, 2) var frag = new Frag(this.x, this.y, radius, color, x, y); this.booms.push(frag); } }, _shapBoom: function () { var that = this; putValue(ocas, octx, this.shape, 5, function (dots) { var dx = canvas.width / 2 - that.x; var dy = canvas.height / 2 - that.y; for (var i = 0; i < dots.length; i++) { color = { a: dots[i].a, b: dots[i].b, c: dots[i].c } var x = dots[i].x; var y = dots[i].y; var radius = 1; var frag = new Frag(that.x, that.y, radius, color, x - dx, y - dy); that.booms.push(frag); } }) } }function putValue(canvas, context, ele, dr, callback) { context.clearRect(0, 0, canvas.width, canvas.height); var img = new Image(); if (ele.innerHTML.indexOf("img") >= 0) { img.src = ele. getElementsByTagName ("img")[0].src; imgload(img, function () { context.drawImage(img, canvas.width / 2 - img.width / 2, canvas.height / 2 - img.width / 2); dots = getimgData(canvas, context, dr); callback(dots); }) } else { var text = ele.innerHTML; context.save(); var fontSize = 200; context.font = fontSize + "px 宋体 bold"; context.textAlign = "center"; context.textBaseline = "middle"; context.fillStyle = "rgba(" + parseInt(getRandom(128, 255)) + "," + parseInt(getRandom(128, 255)) + "," + parseInt(getRandom(128, 255)) + " , 1)"; context.fillText(text, canvas.width / 2, canvas.height / 2); context.restore(); dots = getimgData(canvas, context, dr); callback(dots); } }function imgload(img, callback) { if (img.complete) { callback.call(img); } else { img.onload = function () { callback.call(this); } } }function getimgData(canvas, context, dr) { var imgData = context.getImageData(0, 0, canvas.width, canvas.height); context.clearRect(0, 0, canvas.width, canvas.height); var dots = []; for (var x = 0; x < imgData.width; x += dr) { for (var y = 0; y < imgData.height; y += dr) { var i = (y * imgData.width + x) * 4; if (imgData.data[i + 3] > 128) { var dot = { x: x, y: y, a: imgData.data[i], b: imgData.data[i + 1], c: imgData.data[i + 2] }; dots.push(dot); } } } return dots; }function getRandom(a, b) { return Math.random() * (b - a) + a; }var maxRadius = 1, stars = [];function drawBg() { for (var i = 0; i < 100; i++) { var r = Math.random() * maxRadius; var x = Math.random() * canvas.width; var y = Math.random() * 2 * canvas.height - canvas.height; var star = new Star(x, y, r); stars.push(star); star.paint() } }var Star = function (x, y, r) { this.x = x; this.y = y; this.r = r; } Star.prototype = { paint: function () { ctx.save(); ctx.beginPath(); ctx.arc(this.x, this.y, this.r, 0, 2 * Math.PI); ctx.fillStyle = "rgba(255,255,255," + this.r + ")"; ctx.fill(); ctx.restore(); } }var focallength = 250;var Frag = function (centerX, centerY, radius, color, tx, ty) { this.tx = tx; this.ty = ty; this.x = centerX; this.y = centerY; this.dead = false; this.centerX = centerX; this.centerY = centerY; this.radius = radius; this.color = color; } Frag.prototype = { paint: function () { ctx.save(); ctx.beginPath(); ctx.arc(this.x, this.y, this.radius, 0, 2 * Math.PI); ctx.fillStyle = "rgba(" + this.color.a + "," + this.color.b + "," + this.color.c + ",1)"; ctx.fill() ctx.restore(); }, moveTo: function (index) { this.ty = this.ty + 0.3; var dx = this.tx - this.x, dy = this.ty - this.y; this.x = Math.abs(dx) < 0.1 ? this.tx : (this.x + dx * 0.1); this.y = Math.abs(dy) < 0.1 ? this.ty : (this.y + dy * 0.1); if (dx === 0 && Math.abs(dy) <= 80) { this.dead = true; } this.paint(); } }
I believe you have mastered it after reading the case in this article Method, for more exciting information, please pay attention to other related articles on the php Chinese website!
Recommended reading:
How to make cyan fireworks with black background on canvas
How to make red on canvas with black background fireworks
The above is the detailed content of How to make black background with special effects debris fireworks in canvas. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

The default bottom taskbar of win11 is light blue, which is more beautiful. However, some friends found that the bottom status bar of win11 suddenly turned black. This may be because the theme or background color has been changed. Just change it back. The status bar at the bottom of win11 turns black: 1. First, click on the bottom start menu and open "Settings" 2. Then enter the "Personalization" settings in the left column. 3. Then open the "Color" settings. 4. After entering, turn off the "transparency effect" (if it is turned on, our desktop is black and the status bar will be black) 5. If the wallpaper is not black, then change the selection mode to "light color". Can. 6. If you like other colors, you can freely choose among the theme colors.

Microsoft invites WindowsInsider project members in the Canary and Dev channels to test and experience the new Paint application. The latest version number is 11.2306.30.0. The most noteworthy new feature of this version update is the one-click cutout function. Users only need to click once to automatically eliminate the background and highlight the main body of the picture, making it easier for users to perform subsequent operations. The whole step is very simple. The user imports the picture in the new layout application, and then clicks the "removebackground" button on the toolbar to delete the background in the picture. The user can also use a rectangle to select the area to remove the background.

On iPhone and iPad, one of the many accessibility features Apple has included is background sounds. These sounds are designed to help you stay focused, stay calm, and help minimize distractions when you're busy with something. The background sounds provided include balanced, bright and dark noises, as well as natural sounds such as ocean, rain and streams. All sounds can be set to play in the background to mask unwanted ambient or external noise, and sounds are blended into or hidden beneath other audio and system sounds. Enable Background Sound on iPhone and iPad The following steps describe how to enable background sound on iPhone and iPad running iOS15/iPadOS15 and later. on iPhone ori

PPT background replacement is an important operation that can quickly unify the visual style of the presentation. You can quickly replace the background of your entire presentation by modifying the slide master or using the Format Background feature. In addition, some PPT versions also provide a batch replacement function, which can easily replace the background of all slides. When replacing the background, you should pay attention to choosing a background that matches the theme of the presentation, and ensure that the background clarity and resolution meet the requirements.

1. Open the Meitu Xiu Xiu software, select [Picture Beautification], and import photos from the album. 2. Click [Cutting] on the bottom toolbar and select the [Background Replacement] function. 3. In the [Background] option, select the desired background color from the solid color box, or upload a custom image. 4. After confirming the selection, click [Save] to complete the background color change.

The Go language was born at Google to solve the problems of complexity and insufficient concurrency support of C++. Its original intention is to create a simple, easy-to-learn, efficient concurrency, memory-safe, cross-platform language to improve programmer productivity, build reliable and scalable systems, and promote code porting and sharing.

The versions of html2canvas include html2canvas v0.x, html2canvas v1.x, etc. Detailed introduction: 1. html2canvas v0.x, which is an early version of html2canvas. The latest stable version is v0.5.0-alpha1. It is a mature version that has been widely used and verified in many projects; 2. html2canvas v1.x, this is a new version of html2canvas.

How to use canvas to draw charts and animation effects in uniapp requires specific code examples 1. Introduction With the popularity of mobile devices, more and more applications need to display various charts and animation effects on the mobile terminal. As a cross-platform development framework based on Vue.js, uniapp provides the ability to use canvas to draw charts and animation effects. This article will introduce how uniapp uses canvas to achieve chart and animation effects, and give specific code examples. 2. canvas
