欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

html5流星雨代碼

阮建安2年前8瀏覽0評論

HTML5流星雨是一種特別炫酷的效果,它可以為網頁增加一些令人印象深刻的動感元素。

<canvas></canvas>
<script>
var canvas = document.querySelector('canvas');
var ctx = canvas.getContext('2d');
var w = canvas.width = window.innerWidth;
var h = canvas.height = window.innerHeight;
var meteorArr = []; // 用來存放流星數組
function Meteor() {
this.x = Math.random() * w; // 隨機生成流星的位置
this.y = Math.random() * h;
this.length = Math.random() * 80 + 10; // 隨機生成流星的長度
this.speed = Math.random() * 3 + 3; // 隨機生成流星的速度
this.angle = Math.PI / Math.random() * 2; // 隨機生成流星的角度
}
Meteor.prototype.draw = function() {
var endX = this.x - Math.cos(this.angle) * this.length;
var endY = this.y - Math.sin(this.angle) * this.length;
var gradient = ctx.createLinearGradient(this.x, this.y, endX, endY);
gradient.addColorStop(0, 'rgba(255, 255, 255, 0.5)');
gradient.addColorStop(1, 'rgba(255, 255, 255, 0)');
ctx.beginPath();
ctx.moveTo(this.x, this.y);
ctx.lineTo(endX, endY);
ctx.strokeStyle = gradient;
ctx.stroke();
}
function loop() {
ctx.clearRect(0, 0, w, h);
meteorArr.push(new Meteor());
for (var i = 0; i< meteorArr.length; i++) {
meteorArr[i].draw();
meteorArr[i].x -= meteorArr[i].speed * Math.cos(meteorArr[i].angle);
meteorArr[i].y -= meteorArr[i].speed * Math.sin(meteorArr[i].angle);
if (meteorArr[i].x< -200 || meteorArr[i].x >w + 200 || meteorArr[i].y< -200 || meteorArr[i].y >h + 200) {
meteorArr.splice(i, 1);
i--;
}
}
requestAnimationFrame(loop);
}
loop();
</script>

這是一個使用HTML5 Canvas繪制流星雨的代碼,其中的重要部分是Meteor這個構造函數。它是用來生成每一個流星的實例的,每一個流星實例都有一個隨機生成的位置、長度、速度和角度。

在loop函數中,我們會不斷地生成新的流星,并用Meteor.prototype.draw方法將它們繪制出來。同時,每一個流星實例都要更新自己的位置,如果它已經飛出了屏幕,則將它從流星數組meteorArr中刪除。最后,我們用requestAnimationFrame方法循環執行loop函數,這樣就可以讓流星雨不斷地落下了。