欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript實現(xiàn)鼠標(biāo)移動粒子跟隨效果

 更新時間:2020年09月13日 14:08:11   作者:太陽玄燁  
這篇文章主要為大家詳細(xì)介紹了JavaScript實現(xiàn)鼠標(biāo)移動粒子跟隨效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了JavaScript實現(xiàn)鼠標(biāo)移動粒子跟隨效果的具體代碼,供大家參考,具體內(nèi)容如下

※ 如上圖是最終顯示效果,跟隨鼠標(biāo)的移動,生成的粒子跟隨。

需要用到的js庫:Underscore。Underscore是一個JavaScript實用庫,提供了一整套函數(shù)式編程的實用功能,但是沒有擴展任何JavaScript內(nèi)置對象。它是這個問題的答案:“如果我在一個空白的HTML頁面前坐下,并希望立即開始工作,我需要什么?”...它彌補了部分jQuery沒有實現(xiàn)的功能,同時又是Backbone.js必不可少的部分。

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>鼠標(biāo)粒子demo</title>
 <style>
  canvas { background: #333; }
 </style>
</head>
<body>
 <canvas width="800" height="500">您的瀏覽器不支持此標(biāo)簽!</canvas>
 <script src="js/underscore.min.js"></script>
 <script>
  // 獲取canvas元素
  var cvs = document.querySelector("canvas");
  // 獲取上下文對象
  var ctx = cvs.getContext("2d");
  // 聲明一個空數(shù)組,用來放后面生成的小球
  var ballsArr = [];
 
  // 創(chuàng)建一個小球類
  function Balls (x, y){
   // 坐標(biāo)x為傳進(jìn)來的x
   this.x = x;
   // 坐標(biāo)y為傳進(jìn)來的y
   this.y = y;
   // 生成的小球半徑為5到10中的任一整數(shù)(參數(shù)隨便)
   this.r = _.random(5, 10);
   // 生成的小球的顏色為這七種顏色中的隨機一種(參數(shù)隨便)
   this.c = _.sample(["red", "orange", "yellow", "green", "cyan", "blue", "white"]);
   // 小球坐標(biāo)x的增量為-4到4之間的整數(shù)(參數(shù)隨便)
   this.dx = _.random(-4, 4);
   // 小球坐標(biāo)y的增量為-4到4之間的整數(shù)(參數(shù)隨便)
   this.dy = _.random(-4, 4);
   // 把生成的小球存入數(shù)組ballsArr
   ballsArr.push(this);
  }
 
  // 給所有Balls綁定一個方法update,目的是為了每次都能按照隨機方向移動
  Balls.prototype.update = function (){
   // 每次x坐標(biāo)加上增量dx
   this.x += this.dx;
   // 每次y坐標(biāo)加上增量dy
   this.y += this.dy;
   // 每次半徑縮小0.5(參數(shù)隨便)
   this.r -= 0.5;
   // 半徑小于等于0的話,就從小球數(shù)組中移出
   if(this.r <= 0){
    _.without(ballsArr, this);
   }
  }
 
  // 給所有Balls綁定一個方法render,目的是畫圓。
  Balls.prototype.render = function (){
   // 半徑小于等于0就沒必要畫了
   if(this.r <= 0){
    return;
   }
   // 開始繪制
   ctx.beginPath();
   // 繪制圓形,(圓心坐標(biāo)x,圓心坐標(biāo)y, 起始弧度,終止弧度,[順逆時針])
   ctx.arc(this.x, this.y, this.r, 0, 2*Math.PI);
   // 顏色為數(shù)組中隨機的一個
   ctx.fillStyle = this.c;
   // 畫上畫布
   ctx.fill();
   // 終止繪制
   ctx.closePath(); 
  }
 
  // onmousemove事件監(jiān)聽
  cvs.onmousemove = function (){
   // 在當(dāng)前鼠標(biāo)的位置,生成倆球,然后只要鼠標(biāo)移動就一直生成小球,每次兩個
   new Balls(event.offsetX, event.offsetY);
   new Balls(event.offsetX, event.offsetY);
  }
 
  // setInterval 模擬25FPS的幀率
  setInterval(function (){
   // 因為canvas上屏即像素化,所以先清屏
   ctx.clearRect(0, 0, cvs.width, cvs.height);
   // _.each方法是針對每一個前面的元素,都運行后面的方法
   _.each(ballsArr, function (value){
    value.update();
    value.render();
   });
  }, 40);
 
 </script>
</body>
</html>

里面用到的underscore中的幾個方法,可以到 doc/underscore/ 中去查看具體的解釋。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Spring Boot使用系統(tǒng)參數(shù)表提升系統(tǒng)的靈活性

    詳解Spring Boot使用系統(tǒng)參數(shù)表提升系統(tǒng)的靈活性

    Spring Boot項目中常有一些相對穩(wěn)定的參數(shù)設(shè)置項,其作用范圍是系統(tǒng)級的或模塊級的,這些參數(shù)稱為系統(tǒng)參數(shù)。這些變量以參數(shù)形式進(jìn)行配置,從而提高變動和擴展的靈活性,保持代碼的穩(wěn)定性
    2021-06-06
  • mybatis-plus指定字段模糊查詢的實現(xiàn)方法

    mybatis-plus指定字段模糊查詢的實現(xiàn)方法

    最近項目中使用springboot+mybatis-plus來實現(xiàn),所以下面這篇文章主要給大家介紹了關(guān)于mybatis-plus實現(xiàn)指定字段模糊查詢的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • 詳解Java多線程處理List數(shù)據(jù)

    詳解Java多線程處理List數(shù)據(jù)

    這篇文章主要介紹了Java多線程處理List數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 基于javassist進(jìn)行動態(tài)編程過程解析

    基于javassist進(jìn)行動態(tài)編程過程解析

    這篇文章主要介紹了基于javassist進(jìn)行動態(tài)編程過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • Java旋轉(zhuǎn)數(shù)組中最小數(shù)字具體實現(xiàn)(圖文詳解版)

    Java旋轉(zhuǎn)數(shù)組中最小數(shù)字具體實現(xiàn)(圖文詳解版)

    這篇文章主要給大家介紹了關(guān)于Java旋轉(zhuǎn)數(shù)組中最小數(shù)字具體實現(xiàn)的相關(guān)資料,旋轉(zhuǎn)數(shù)組,說明數(shù)據(jù)不變,只是改變位置,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • Java中打jar包以及如何調(diào)用包方法演示

    Java中打jar包以及如何調(diào)用包方法演示

    這篇文章主要給大家介紹了關(guān)于Java中打jar包以及如何調(diào)用包的相關(guān)資料,jar包的全稱是java archive,jar包本質(zhì)就是一種壓縮包,在Java開發(fā)中一般是用來壓縮類的一個包,需要的朋友可以參考下
    2023-09-09
  • java實現(xiàn)的新浪微博分享代碼實例

    java實現(xiàn)的新浪微博分享代碼實例

    這篇文章主要介紹了java實現(xiàn)的新浪微博分享代碼實例,是通過新浪API獲得授權(quán),然后接受客戶端請求的數(shù)據(jù),第三方應(yīng)用發(fā)送請求消息到微博,喚起微博分享界面,非常的實用,有相同需要的小伙伴可以參考下。
    2015-03-03
  • java中rss解析器(rome.jar和jdom.jar)示例

    java中rss解析器(rome.jar和jdom.jar)示例

    這篇文章主要介紹了java中rss解析器(rome.jar和jdom.jar)示例,需要的朋友可以參考下
    2014-03-03
  • 微信小程序調(diào)用微信登陸獲取openid及java做為服務(wù)端示例

    微信小程序調(diào)用微信登陸獲取openid及java做為服務(wù)端示例

    這篇文章主要介紹了微信小程序調(diào)用微信登陸獲取openid及java做為服務(wù)端示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • java如何實現(xiàn)多線程的順序執(zhí)行

    java如何實現(xiàn)多線程的順序執(zhí)行

    多線程是java的一種重要技術(shù),但是多線程的運行是沒有絕對的順序的,那么java如何實現(xiàn)多線程的順序執(zhí)行,下面就一起來了解一下
    2021-05-05

最新評論