• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 怎样利用Javascript简单实现星空连线的效果

怎样利用Javascript简单实现星空连线的效果

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了Javascript效果,星空连线效果等相关知识,希望对您有所帮助

本篇文章给大家带来了JavaScript中星空连线效果应该怎样呈现的相关知识,希望对大家有帮助。


怎样利用Javascript简单实现星空连线的效果


Javascript 星空连线效果的简单实现

之前有见过非常炫酷的粒子连线的效果,这篇文章主要是实现一个简单的星空连线的效果。

先贴一下大概的效果图。


怎样利用Javascript简单实现星空连线的效果


这个主要是用到了Html5中的canvas绘图,关于canvas的基本使用这里就不展开介绍了,大家可以自行去了解。

然后采用的是requestAnimationFrame来进行动画的绘制,而没有采用定时器。


一、实现的效果

星星自动生成,且星星的颜色,初始位置,移动方向都是随机的。

当星星之间的距离小于给定值之后,会在星星之间生成连线。

鼠标指针和星星之间的距离小于给定值之后,也会在星星和鼠标指针之间生成连线。


二、实现的方法

通过canvas绘图实现

定义星星类Star, 包括位置,半径,颜色,移速等属性与绘制和移动等方法。

绘制星星,实现随机移动的效果。

在绘制星星之后计算每个星星之间的距离,在符合要求的星星之间绘制连线。

计算鼠标指针和星星之间的距离,在符合要求的星星之间绘制连线。

绘制采用requestAnimationFrame

在主函数中执行4,5的函数继续进行绘制


三、具体的实现

Html + Css

基本的文档结构非常简单,创建一个canvas容器就可以了。

<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta http-equiv="X-UA-Compatible" content="ie=edge">    <title>星空连线</title>    <style type="text/css">        * {            margin: 0;            padding: 0;        }        body,        html {            width: 100%;            height: 100%;            overflow: hidden;        }        #starry {            position: absolute;            background-color: #000000;        }    </style></head><body>    <canvas id="starry"></canvas></html>

定义星星类Star, 包括位置,半径,颜色,移速等属性与绘制和移动等方法。

class Star {      constructor() {          this.x = randNum(3, canvas.width - 3);          this.y = randNum(3, canvas.height - 3);          this.r = randNum(1, 3);          this.color = randColor();          this.speedX = randNum(-2, 2) * 0.2;          this.speedY = randNum(-3, 3) * 0.2;      }      // 绘制每个星点      draw() {          //新建一条路径          ctx.beginPath();          //调整透明度          ctx.globalAlpha = 1;          // 填充颜色          ctx.fillStyle = this.color;          // 绘制圆弧          ctx.arc(this.x, this.y, this.r, 0, Math.PI * 2);          // 填充          ctx.fill();      }      // 星星移动      move() {          this.x += this.speedX;          this.y += this.speedY;          //设置极限值          if (this.x <= 3 || this.x >= canvas.width - 3) this.speedX *= -1;          if (this.y <= 3 || this.y >= canvas.height - 3) this.speedY *= -1;      }  }  // 存储小球  let stars = [];  for (let i = 0; i < 150; i++) {      let star = new Star();      // 存入数组      stars.push(star);  }

绘制星星,实现随机移动的效果。

我们可以先实现星星的绘制,先暂时不管连线的效果。

function drawLine() {    for (var i = 0; i < stars.length; i++) {        stars[i].draw();        stars[i].move();    }}

在绘制星星之后计算每个星星之间的距离,在符合要求的星星之间绘制连线。

其实只要在上一步的函数中添加距离判断和绘制连线的代码就可以了。

function drawLine() {    for (var i = 0; i < stars.length; i++) {        stars[i].draw();        stars[i].move();        for (var j = 0; j < stars.length; j++) {            if (i != j) {                if (Math.sqrt(Math.pow((stars[i].x - stars[j].x), 2) + Math.pow((stars[i].y - stars[j].y), 2)) < 80) {             
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 怎样利用Javascript简单实现星空连线的效果

相关文章

  • Photoshop设计炫彩效果的光环标志教程
  • 在 MySQL 中 int (10) 和 int (11) 的区别
  • JavaScript怎么求两个数的最大公约数
  • 了解Ajax Session失效跳转登录页面的方法
  • 设计师应该从四个方面优化网站
  • BootstrapTable如何重新加载数据?3种方式了解一下!
  • 一起聊聊PHP中return语句的作用和echo的区别(详解及实例)
  • 解决sqlServer使用ROW_NUMBER时不排序的方法
  • 关于24小时快速排名SEO优化关键词排名前三的猫腻
  • 如何在Laravel应用中集成使用Emoji表情

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • CSS实现瀑布流的两种方式
    • 如何解决php方法执行时间过长的问题
    • PhotoShop制作逼真的补丁文字效果的教程
    • PS制作炫彩新年快乐艺术文字效果的教程
    • 如何解决php md5生成16位出现乱码问题
    • 小程序怎样在页面传递对象数组?
    • Node.js中async的用法是什么
    • windows登陆界面制作
    • 详解Composer+Git怎么创建 “服务类库”
    • PHP替换Word中变量并导出PDF图片的实现方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有