一.原理

星星之所以闪烁:采用的随机的抽取的星星发生缩放,从大足见变没有。

二.代码

<!DOCTYPE html>
<html>
<head lang="en"><meta charset="UTF-8"><title></title>
</head>
<body bgcolor="#000">
<canvas id="canvas" style="display:block;margin:50px auto;">当前浏览器不支持Canvas,请更换浏览器后再试
</canvas>
<script type="text/javascript">var canvas = document.getElementById("canvas");var cxt=canvas.getContext('2d');canvas.width =1920;canvas.height =800;starArr=[];  //2.多个星星对象for(var i=0;i<150;i++){var starObj={radius1:10+5*Math.random(),radius2:2+4*Math.random(),x:30+(canvas.width-60)*Math.random(),y:30+(canvas.height-60)*Math.random(),num:4,angle:360*Math.random(),changeAngle:-5+10*Math.random()}starArr.push(starObj);}setInterval(function(){update(cxt);},50);  //3.星星随机的变化:星星闪烁是因为大小缩放function update(cxt){cxt.clearRect(0,0,canvas.width,canvas.height);for(var i=0;i<starArr.length;i++) {starArr[i].angle+=starArr[i].changeAngle;cxt.save();cxt.beginPath();cxt.translate(starArr[i].x, starArr[i].y);cxt.rotate(starArr[i].angle * Math.PI /360);cxt.scale(Math.sin(starArr[i].angle * Math.PI / 180), Math.sin(starArr[i].angle * Math.PI / 180));cxt.globalAlpha = Math.abs(Math.sin(starArr[i].angle * Math.PI / 180));drawStars(cxt,0,0,starArr[i].radius1,starArr[i].radius2,starArr[i].num);cxt.restore();}} //1.绘制一个星星function drawStars(cxt,x,y,radius1,radius2,num){var angle = 360/(num*2);var arr = [];for(var i=0;i<num*2;i++){var starObj = {};if(i%2==0){starObj.x = x+radius1*Math.cos(i*angle*Math.PI/180);starObj.y = y+radius1*Math.sin(i*angle*Math.PI/180);}else{starObj.x = x+radius2*Math.cos(i*angle*Math.PI/180);starObj.y = y+radius2*Math.sin(i*angle*Math.PI/180);}arr.push(starObj);}cxt.beginPath();cxt.fillStyle="#fff";cxt.moveTo(arr[0].x,arr[0].y);for(var i=1;i<arr.length;i++){cxt.lineTo(arr[i].x,arr[i].y);}cxt.closePath();cxt.fill();}
</script>
</body>
</html>

canvas漫天闪烁的星星相关推荐

  1. java随机星星怎么闪_canvas画随机闪烁的星星

    canvas画一颗星星: 规则的星星有内切圆和外切圆,每两个点之间的角度是固定的,因此可得到星星的每个点的坐标,画出星星. function drawStars(x,y,radius1,radius2 ...

  2. Linux操作系统下,在终端打印出闪烁的星星图案

    Linux系统下,在终端打印出闪烁的星星图案. 一.首先需要耐心,使用输出语句先"弄"出一个星星图案 (我是为了打印出来的星星是在终端中间,所以这样子敲的,可根据自己想法完成) 二 ...

  3. OpenGL_Qt学习笔记之_07(闪烁的星星)

    OpenGL_Qt学习笔记之_07(闪烁的星星) 这一小节我们要完成的任务是:将一张背景是黑色,中间是白亮色的星星图片和五颜六色的颜色进行色彩融合,变成一颗彩色的星星.并且让这些星星自转和公转,可以控 ...

  4. html5实例-闪烁的星星

    一.绘制五角星 1.1页面结构 <!DOCTYPE html> <html><head><meta charset="UTF-8"> ...

  5. Vijos P1881 闪烁的星星

    背景 星光闪耀--深蓝色空间 听说过他们的语言 沉默 暮 他们称赞深相互 描写叙述 繁星, 漫天的繁星. 繁星排成一列, 我数一数呀, 一共同拥有N仅仅小星星呢. 星星们是听话的好孩子, 小岛在指挥它 ...

  6. 闪烁的星星(Nehe)

    以下代码演示与Nehe教程第九课中一样的效果.第十课中三维的暂不实现.主要使用纹理贴图相关方面知识. WStar.h #pragma once #include <QtOpenGL/QtOpen ...

  7. 教你用canvas画n角星星

    首先我们要明白星星的结构,星星有很多种,五角星是最常用的一种星星,后面还有三角星六角星等等,但是只要是星星都是高度对称的,所以只要是星星结构的东西我们就能按照一定规则将其画出. 我们看一下一个n角星的 ...

  8. iOS中解析json数据

    同Android中的jsonarray和jsonobject相同,iOS中json分为nsarray和jsonobject, []--------jsonarray/nsarray; {}------ ...

  9. 璀璨星空Mac高清动态壁纸

    喜欢夜晚的繁星?小编分享这组璀璨星空高清动态壁纸给大家,漫天闪烁的星星非常震撼,感兴趣的来使用吧~ 璀璨星空高清动态壁纸

  10. 消除canvas闪烁

    canvas的闪烁主要和平台有关,如何去避免需要慢慢积累经验. 1. clearRect造成闪烁 使用clearRect清空局部区域后重绘能会造成闪烁.PC上问题不大,移动端比较明显.(注clearR ...

最新文章

  1. 六边形块级元素的绘制
  2. Ubuntu下安装Qt全部过程
  3. STL标准库vector笔记
  4. python zen_Python的宗旨(Zen of Python)
  5. android unix时间,android: 日期转Unix时间戳,Unix时间戳转日期,带时区
  6. python批处理远程关机脚本,python实现远程通过网络邮件控制计算机重启或关机
  7. html中支持的常用中文字体
  8. LIVE MINI ESP32开发板教程系列(四)NeoPixel + ws2812b实现炫彩显示
  9. core音标_core的意思在线翻译,解释core中文英文含义,短语词组,音标读音,例句,词源【澳典网ODict.Net】...
  10. 微信小程序(沧海一笑)
  11. 凡诺CMS一处文件包含漏洞
  12. 社会心理学(第8版)
  13. 2021年量子计算机奖,2021美国科学天才奖出炉:高中生瓜分180万奖金
  14. python执行其它py_如何在一个py程序里执行另一个py程序?
  15. ffmpeg命令详细说明
  16. YMIR-人脸检测-深度学习模型一站式开发
  17. Matlab一直提示激活,激活后仍打不开重复提示激活
  18. 教你如何轻松搞定云上打印管理
  19. MYSQL表的增删改查进阶(下)
  20. k8s集群flannel问题之telnet node节点开放端口Connect timeout情况

热门文章

  1. 虚拟机上的hadoop localhost:8088,localhost:50070均不能访问
  2. MATLAB地图工具箱学习总结(三)地图工具箱的基本知识
  3. 万恶的prototype
  4. 电子元器件符号+实物图+命名规则(太全了,绝对收藏)
  5. 区分单音节,双音节和多音节
  6. OpenCV黑魔法之隐身衣 | 附源码
  7. 尝试Ajax数据爬取微博
  8. 四、HTTP协议Header介绍
  9. 2021年中国食糖产销量及重点企业对比分析[图]
  10. 怎样打开VOIP与SIP