Canvas繪制粒子動畫背景-創新互聯

效果如下:

成都創新互聯公司于2013年成立,是專業互聯網技術服務公司,擁有項目成都網站制作、網站設計網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元商南做網站,已為上家服務,為商南各地企業和個人服務,聯系電話:13518219792

Canvas 繪制粒子動畫背景

代碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<style>
 *{
  margin:0px;
  padding:0px;
 }
 body{
  background:#000;
 }
 canvas{
  position:absolute;
  width:100%;
  height:100%;
 }
</style>
<body>
<canvas id="canvas">您的瀏覽器不支持,請升級最新的版本!</canvas>
<script>window.requestAnimFrame = ( function() {
 return window.requestAnimationFrame ||
   window.webkitRequestAnimationFrame ||
   window.mozRequestAnimationFrame ||
   function( callback ) {
    window.setTimeout( callback, 1000 / 60 );
   };
})();
var can = document.getElementById("canvas");
var cxt = can.getContext("2d");
can.width = window.innerWidth;
can.height = window.innerHeight;
cxt.lineWidth = 0.3;
//初始鏈接線條顯示位置
var mousePosition = {
 x : 30*can.width/100,
 y : 30*can.height/100
}
//圓形粒子對象參數
var dots = {
 n : 500,//圓形粒子個數
 distance : 50,//圓形粒子之間的距離
 d_radius : 80,//粒子距離鼠標點的距離
 array : []//保存n個圓形粒子對象
}
//創建隨機顏色值
function colorValue(min){
 return Math.floor(Math.random()*255 + min);
}
function createColorStyle(r,g,b){
 return "rgba("+r+","+g+","+b+", 1)";
}
//混合兩個圓形粒子的顏色
function mixConnect(c1,r1,c2,r2){//圓的顏色 半徑
 return (c1*r1+c2*r2)/(r1+r2);
};
//生成線條的顏色
function lineColor(dot1,dot2){//獲取具體的圓的顏色再計算
 var color1 = dot1.color,
   color2 = dot2.color;
 var r = mixConnect(color1.r,dot1.radius,color2.r,dot2.radius);
 var g = mixConnect(color1.g,dot1.radius,color2.g,dot2.radius);
 var b = mixConnect(color1.b,dot1.radius,color2.b,dot2.radius);
 return createColorStyle(Math.floor(r),Math.floor(g),Math.floor(b));
}
//生成圓形粒子的顏色對象
function Color(min){
 min = min || 0;
 this.r = colorValue(min);
 this.g = colorValue(min);
 this.b = colorValue(min);
 this.style = createColorStyle(this.r,this.g,this.b);
}
//創建圓形粒子對象
function Dot(){
 //圓形粒子隨機圓心坐標點
 this.x = Math.random()*can.width;
 this.y = Math.random()*can.height;
 //x y 方向運動的速度值
 this.vx = -0.5 + Math.random();
 this.vy = -0.5 + Math.random();
 this.radius = Math.random()*5;
 //this.color = "#ff3333";
 this.color = new Color();
}
//繪制出圓形粒子
Dot.prototype.draw = function(){
 cxt.beginPath();
 cxt.fillStyle = this.color.style;
 cxt.arc(this.x,this.y,this.radius,0,Math.PI*2,false);
 cxt.fill();
}
//添加圓形粒子
function createCircle(){
 for (var i=0;i<dots.n ;i++ )
 {
  dots.array.push(new Dot());
 }
}
//繪制出圓形粒子
function drawDots(){
 for (var i=0;i<dots.n ;i++ )
 {
  var dot = dots.array[i];
  dot.draw();
 }
}
//drawDots();
//移動
function moveDots(){
 for (var i=0;i<dots.n ;i++ ){
  var dot = dots.array[i];
  //當圓形粒子對象碰壁的時候就反彈回來
  if (dot.y < 0 || dot.y > can.height)
  {
   dot.vx = dot.vx;
   dot.vy = -dot.vy;
  }else if (dot.x < 0 || dot.x > can.width)
  {
   dot.vx = -dot.vx;
   dot.vy = dot.vy;
  }
  //給圓形粒子圓心坐標加上速度值移動圓形粒子
  dot.x += dot.vx;
  dot.y += dot.vy;
 }
}
//鏈接粒子對象
function connectDots(){
 for (var i=0;i<dots.n ; i++)
 {
  for ( var j=0;j<dots.n ; j++)
  {
   iDot = dots.array[i];
   jDot = dots.array[j];
   if ((iDot.x - jDot.x) < dots.distance && (iDot.y - jDot.y) < dots.distance && (iDot.x - jDot.x) > -dots.distance && (iDot.y - jDot.y) > -dots.distance)
   {
    if ((iDot.x - mousePosition.x) < dots.d_radius && (iDot.y - mousePosition.y) < dots.d_radius && (iDot.x - mousePosition.x) > -dots.d_radius && (iDot.y - mousePosition.y) > -dots.d_radius)
    {
     cxt.beginPath();
     //cxt.strokeStyle = "yellow";
     cxt.strokeStyle = lineColor(iDot,jDot);
     cxt.moveTo(iDot.x,iDot.y);
     cxt.lineTo(jDot.x,jDot.y);
     cxt.closePath();
     cxt.stroke();
    }
   }
  }
 }
}
createCircle();
//讓圓形粒子不斷的移動
function animateDots(){
 cxt.clearRect(0,0,can.width,can.height);
 moveDots();
 connectDots()
 drawDots();
 requestAnimFrame(animateDots);
}
animateDots();
can.onmousemove = function(ev){
 var ev = ev || window.event;
 mousePosition.x = ev.pageX;
 mousePosition.y = ev.pageY;
}
can.onmouseout = function(){
 mousePosition.x = can.width/2;
 mousePosition.y = can.height/2;
}
</script>
</body>
</html>

另外有需要云服務器可以了解下創新互聯建站m.kartarina.com,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

本文題目:Canvas繪制粒子動畫背景-創新互聯
新聞來源:http://m.kartarina.com/article10/cdcodo.html

成都網站建設公司_創新互聯,為您提供品牌網站設計企業建站虛擬主機網站設計公司搜索引擎優化品牌網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設
主站蜘蛛池模板: 日韩人妻无码精品久久免费一| 亚洲国产精品无码久久| 无码人妻丰满熟妇啪啪网站| 久久亚洲AV成人无码国产电影| 国产精品午夜福利在线无码 | 无码不卡亚洲成?人片| 中文字幕无码免费久久| 国产成人无码专区| av无码久久久久不卡免费网站| 狠狠爱无码一区二区三区| 无码午夜成人1000部免费视频 | 日韩精品无码永久免费网站| 亚洲一区二区三区无码中文字幕| 无码专区国产无套粉嫩白浆内射| 久久精品aⅴ无码中文字字幕| 韩国精品一区二区三区无码视频| 亚洲av无码成人精品国产| 久久精品无码一区二区WWW| 无码中文字幕乱在线观看| 无码人妻少妇伦在线电影| 一本大道在线无码一区| 亚洲av无码一区二区三区网站| 亚洲av无码片在线播放| av无码a在线观看| 中文字幕无码日韩专区| yy111111少妇影院无码| 加勒比无码一区二区三区| 中文字幕无码播放免费| 蜜芽亚洲av无码精品色午夜| 亚洲av无码一区二区乱子伦as | 国产品无码一区二区三区在线蜜桃 | 无码国产精品一区二区免费虚拟VR | 无码午夜人妻一区二区不卡视频| 精品无码日韩一区二区三区不卡| 亚洲va无码手机在线电影| 亚洲中文字幕久久精品无码APP | 中文字幕av无码一区二区三区电影| 日韩毛片无码永久免费看| 久久无码一区二区三区少妇 | 无码国产精品一区二区免费模式| 永久免费av无码入口国语片|