부스러기 모양이 삼각형이어야하는 (현재는 직사각형) 색종이 효과 (첨부 된 스크린 샷)를 만들고 싶습니다. 나는 다음과 같은 자바 스크립트 코드를 사용하여 효과를 얻고있다. 그러나 나는 웹 페이지가 열렸을 때 flakes가 위에서 아래로 떨어지기를 원합니다. 지금 우리가 페이지를 열면 그 페이지는 부스러기에 넘쳐납니다. 나는 화면을 비우고 조각을 천천히 내릴 수있는 방법을 찾고있었습니다. 사람이 효과를 분류하는 저를 도와주세요 수 :자바 스크립트를 사용하여 색종이 효과를 만드는 방법
window.onload = function() {
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var W = window.innerWidth;
var H = window.innerHeight;
canvas.width = W;
canvas.height = H;
var mp = 1000; //max particles
var particles = [];
for (var i = 0; i < mp; i++) {
particles.push({
x: Math.random() * W, //x-coordinate
y: Math.random() * H, //y-coordinate
r: Math.random() * 18 + 1, //radius
d: Math.random() * mp, //density
color: "rgba(" + Math.floor((Math.random() * 255)) + ", " + Math.floor((Math.random() * 255)) + ", " + Math.floor((Math.random() * 255)) + ", 0.8)",
tilt: Math.floor(Math.random() * 5) - 5
});
}
//Lets draw the flakes
function draw() {
ctx.clearRect(0, 0, W, H);
for (var i = 0; i < mp; i++) {
var p = particles[i];
ctx.beginPath();
ctx.lineWidth = p.r;
ctx.strokeStyle = p.color; // Green path
ctx.moveTo(p.x, p.y);
ctx.lineTo(p.x + p.tilt + p.r/2, p.y + p.tilt);
ctx.stroke(); // Draw it
}
update();
}
var angle = 0;
function update() {
angle += 0.01;
for (var i = 0; i < mp; i++) {
var p = particles[i];
p.y += Math.cos(angle + p.d) + 1 + p.r/2;
p.x += Math.sin(angle) * 2;
if (p.x > W + 5 || p.x < -5 || p.y > H) {
if (i % 3 > 0) //66.67% of the flakes
{
particles[i] = {
x: Math.random() * W,
y: -10,
r: p.r,
d: p.d,
color: p.color,
tilt: p.tilt
};
}
}
}
}
setInterval(draw, 20);
}
<canvas id="canvas"></canvas>
바이올린을 JS Fiddle link
는 최종 목표 : Image
당신이 그것을 작동하는 조각 할 수 있습니까? –
@TemaniAfif 여기 [바이올린]의 (https://jsfiddle.net/mzack5020/72dun3fx/). 그것은 행동을하네요 , top down effect. 무엇이 문제입니까? –
@TemaniAfif 그 점에 대해 감사드립니다. 내가 바꿀 필요가있는 두 가지가 있습니다 : 1. 직사각형에서 삼각형까지의 조각의 모양 2. th 페이지가로드 될 때 전자 스크린이 플레이크와 함께로드되므로 플레이크가 페이지 상단에서 천천히 내려 오기를 원합니다. 감사합니다 – Victor