html 穿越星空效果,CANVAS 光速穿越星空的效果

JavaScript

语言:

JaveScriptBabelCoffeeScript

确定

var canvas = document.getElementById("canvas");

var context = canvas.getContext("2d");

var distanceScaleFactorX = 0.05;

var distanceScaleFactorY = 0.05;

var initialNumberOfPoints = 50;

var points;

var originX;

var originY;

canvas.width = window.innerWidth;

canvas.height = window.innerHeight;

originX = canvas.width / 2;

originY = canvas.height / 2;

function clear() {

context.fillStyle = "rgba(0, 0, 0, 0.3)";

context.fillRect(0, 0, canvas.width, canvas.height);

}

clear();

function generateRandomPoints(numberOfPoints) {

var generatedPoints = [];

for (var i = 0; i < numberOfPoints; i++) {

var point = generateRandomPoint();

generatedPoints.push(point);

}

return generatedPoints;

}

function generateRandomPoint() {

var x = Math.floor(Math.random() * canvas.width);

var y = Math.floor(Math.random() * canvas.height);

var point = {

x: x - originX,

y: y - originY

};

return point;

}

points = generateRandomPoints(initialNumberOfPoints);

function drawPoints(pointsToDraw) {

for (var i = 0; i < pointsToDraw.length; i++) {

context.fillStyle = "white";

context.fillRect(pointsToDraw[i].x + originX, pointsToDraw[i].y + originY, 1, 1);

}

}

drawPoints(points);

function movePoints(pointsToMove) {

for (var i = 0; i < pointsToMove.length; i++) {

pointsToMove[i].x += +pointsToMove[i].x * distanceScaleFactorX;

pointsToMove[i].y += +pointsToMove[i].y * distanceScaleFactorY;

if (pointsToMove[i].x < -(canvas.width / 2) || pointsToMove[i].x > (canvas.width / 2) || pointsToMove[i].y < -(canvas.height / 2) || pointsToMove[i].y > (canvas.height / 2)) {

pointsToMove.splice(i, 1);

}

}

}

setInterval(function fly() {

clear();

drawPoints(points);

points = points.concat(generateRandomPoints(initialNumberOfPoints));

movePoints(points);

}, 10);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值