javascript - 画布 - 看不到我星星的颜色
问题描述
我创建了画布动画背景……但是……我看不到我的星星……星星应该是白色的。
代码:
window.onload = sky();
function sky(){
var canvas = document.getElementById("sky");
var ctx = canvas.getContext("2d");
var W = window.innerWidth;
var H = window.innerHeight;
canvas.width = W;
canvas.height = H;
var ms = 100;
var stars =[];
for (var i=0; i<ms; i++){
stars.push({
x: Math.random()*W,
y: Math.random()*H,
r: Math.random()*5+2,
d: Math.random()+1
})
}
function drawStars(){
ctx.clearRect(0,0,W,H);
ctx.fillStyle = "white";
ctx.beginPath();
for(var i=0; i<ms; i++){
var s = stars[i];
ctx.moveTo(s.x, s.y);
ctx.arc(s.x, s.y, 0, Math.Pi*2, true);
}
ctx.fill();
moveStars();
}
var angle = 0;
function moveStars(){
angle +=0.01;
for( var i=0; i<ms; i++){
var s = stars[i];
s.y += Math.pow(s.d, 2)+1;
s.x += Math.sin(angle)*2;
if(s.y>H){
stars[i] = {x: Math.random()+W, y:0, r: s.r, d: s.d};
}
}
}
setInterval(drawStars,25);
}
我的背景颜色是黑色,所以我应该看到白色的星星......小提琴:https ://jsfiddle.net/w39fs7at/
解决方案
您缺少 arc 函数的半径参数。Math.Pi 也是未定义的,它应该是 Math.PI。
所以,ctx.arc(s.x, s.y, 0, Math.Pi*2, true);
改为
ctx.arc(s.x, s.y, 5, 0, Math.PI*2, true);
其中5是恒星的半径。
推荐阅读
- c# - 错误 - 当我尝试在 .net core 2.2 中启用迁移时,项目中未安装实体框架包
- c# - 如何将带有变量的 onClick 侦听器添加到按钮?
- express - `public` 文件夹中的静态文件未提供服务(使用 ExpressJS 的 NextJS 自定义服务器)
- php - 如何防止 WooCommerce 上的产品被 Google 索引?
- java - 使用 JDOM 创建简单文档
- reactjs - 在 redux 状态下更新每个对象中的特定属性
- microsoft-graph-api - 使用图形 API 错误添加团队计划器选项卡
- r - 包含数字的字符串的模糊匹配
- javascript - 合并一维和二维数组以在javascript中创建一个新的一维数组
- php - 如何从 PHP 而不是 CGI-Mailer 重播发件人电子邮件