精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

OpenHarmony - 基于ArkUI(JS)實現移動粒子效果背景

系統 OpenHarmony
偶然間發現了一種網頁背景,線條能自發的運動,并且可以讓這些線條向鼠標聚集,就覺得挺有意思的,讓我們來試著用鴻蒙JS來實現這個炫酷的背景吧!

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

前言

在web端博客逛多了,偶然間發現了一種網頁背景,線條能自發的運動,并且可以讓這些線條向鼠標聚集,就覺得挺有意思的,讓我們來試著用鴻蒙JS來實現這個炫酷的背景吧!

效果演示

OpenHarmony - 基于ArkUI(JS)實現移動粒子效果背景-開源基礎軟件社區

實現步驟

1、創建canvas標簽

設置畫布的大小,背景顏色,以及觸摸事件。

<div class="container">
<canvas ref="canvas1" style="width: 100%; height: 100%; background-color: rgb(80, 80, 80);" @touchmove="handleMove"></canvas>
</div>

2、創建粒子

中學我們就知道,兩點成線。頁面中的這些線條其實都是點與點之間的連線,粒子運動,就造成了線條的運動,所以我們第一步先用數組來存儲頁面中的這些粒子。x和y代表粒子的坐標位置,xa和ya分別代表粒子水平方向和垂直方向運動的速度,max代表粒子成線的最小距離條件。

export default {
data: {
dots: [], // 存儲粒子對象的數組
},
// 創建粒子,并存儲到數組中
drawBackground() {
// 創建粒子,并存儲到數組中
for (let i=0; i<180; i++) {
// 粒子的位置
let x = Math.random() * 360
let y = Math.random() * 780
// 水平移動的速度,垂直移動的速度
let xa = Math.random() * 0.5
let ya = Math.random() * 0.5
this.dots.push({ x, y, xa, ya, max: 3600 })
}
},
}

3、手指觸摸事件

web端的效果是跟隨鼠標的移動,移動端沒有鼠標,那我們就讓粒子向手指移動的地方靠近。用手指觸摸事件來模擬鼠標移動事件。

x代表手指觸摸屏幕的橫坐標,y代表手指觸摸屏幕的縱坐標,max代表粒子向手指觸摸屏幕位置靠近的最小距離條件。

handleMove事件的作用,手指觸摸屏幕時更新手指的坐標位置。

export default {
data: {
mouse: { // 手指位置
x: null,
y: null,
max: 3200
}
},
handleMove(e) {
this.mouse.x = e.touches[0].localX
this.mouse.y = e.touches[0].localY
}
}

4、粒子的運動

前面我們已經準備好的粒子對象數組dots和模擬鼠標的手指對象,現在正戲要開始了。我們設定一個函數,接收canvas上下文對象,用來規定粒子的運動,并且畫出粒子之間的線條。

我們創建一個新的數組nDots,用來存儲手指對象和所有的粒子對象,接著遍歷所有的粒子,規定粒子的運動。

當粒子運動到畫布的邊界時,我們要做邊界處理,讓粒子向反方向運動。

用上下文對象繪制粒子,為了讓線條連線處不突兀,把粒子顏色也設置為背景顏色。

接著開始遍歷nDots數組,若遍歷到的是同一個粒子,則直接進入下一次循環。用勾股定理算出粒子之間的距離dDistance,當dDistance小于粒子間連線的最小距離時,繪制粒子間的線條;如果是手指對象,當dDistance小于向手指位置靠近的最小距離時,粒子向手指觸摸位置靠近。

最后,我們刪除比較過的粒子對象。

draw(ctx) {
const self = this;
// 清空整個畫布
ctx.clearRect(0, 0, 360, 780);
// 粒子和鼠標的結合,把鼠標數組添加到粒子數組中
const nDots = [this.mouse, ...this.dots];
// 粒子運動
this.dots.forEach(function (dot) {
dot.x += dot.xa;
dot.y += dot.ya;
// 粒子運動的邊界(畫布),反彈
dot.xa *= (dot.x > 360 || dot.x < 0) ? -1 : 1;
dot.ya *= (dot.y > 780 || dot.y < 0) ? -1 : 1;
// 繪制粒子
ctx.fillRect(dot.x, dot.y, 1, 1);
ctx.fillStyle = "#282828";
// 連線
for (let i=0; i<nDots.length; i++) {
let d = nDots[i];
if(d == dot) {
continue;
}
// 計算粒子的距離
let dx = dot.x - d.x;
let dy = dot.y - d.y;
let dDistance = Math.pow(dx, 2) + Math.pow(dy, 2);
// 連線操作
if (dDistance < d.max) {
// 處理觸摸事件
if (d == self.mouse && dDistance > d.max / 2) {
dot.x -= dx * 0.03;
dot.y -= dy * 0.03;
}
// 繪制線條
ctx.beginPath();
ctx.lineWidth = 0.7;
ctx.strokeStyle = 'rgba(80, 130, 189, 0.9)';
// 起始位置
ctx.moveTo(dot.x, dot.y);
// 結束位置
ctx.lineTo(d.x, d.y);
ctx.stroke();
ctx.closePath();
}
}
// 刪除比較過的粒子
nDots.splice(nDots.indexOf(dot), 1);
})
},

5、展示背景

最后,我們看看有沒有生效,在onShow方法中調用drawBackground方法,點亮背景。

export default {
onShow() {
this.drawBackground();
},
drawBackground() {
// 創建粒子,并存儲到數組中
for (let i=0; i<180; i++) {
// 粒子的位置
let x = Math.random() * 360;
let y = Math.random() * 780;

// 水平移動的速度,垂直移動的速度
let xa = Math.random() * 0.5;
let ya = Math.random() * 0.5;

this.dots.push({ x, y, xa, ya, max: 3600 }); // 兩個粒子相吸的最小距離
}
const can = this.$refs.canvas1;
const ctx = can.getContext('2d');
setInterval(() => {
this.draw(ctx);
}, 1000 / 60);
}
}

總結

  1. 處理粒子向手指對象運動時,為了讓速度不會太快,增加條件dDistance > d.max / 2。
  2. 當粒子運動邊界時,需要給粒子一個反方向的速度。
  3. 在onInit生命周期中無法拿到canvas的dom,需要在onShow方法中獲取。
  4. 粒子運動的速度看起來不太柔和,需要調試下參數。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??。

責任編輯:jianghua 來源: 51CTO開源基礎軟件社區
相關推薦

2022-07-26 14:40:42

ArkUIJS

2022-09-21 14:51:21

ArkUI信件彈出

2022-09-15 15:04:16

ArkUI鴻蒙

2022-08-04 13:55:08

拼數字小游戲鴻蒙

2024-01-11 15:54:55

eTS語言TypeScript應用開發

2022-05-27 14:55:34

canvas畫布鴻蒙

2022-08-05 19:27:22

通用API鴻蒙

2022-09-14 15:17:26

ArkUI鴻蒙

2022-10-17 14:36:09

ArkUI虛擬搖桿組件

2022-07-13 16:24:12

ArkUI(JS)打地鼠游戲

2022-02-17 17:05:31

OpenHarmonWEB前端鴻蒙

2022-07-25 14:17:04

JS應用開發

2022-08-22 17:28:34

ArkUI鴻蒙

2022-09-09 14:47:50

CircleArkUI

2022-10-24 14:49:54

ArkUI心電圖組件

2022-11-02 16:06:54

ArkUIETS

2022-09-16 15:34:32

CanvasArkUI

2022-07-20 15:32:25

時鐘翻頁Text組件

2023-08-17 15:01:08

ArkUI布局渲染

2022-07-20 15:24:47

ArkUI動畫效果項目開發
點贊
收藏

51CTO技術棧公眾號

亚洲国产精品99久久久久久久久| 欧美精品福利| 欧美日韩在线三区| 国产欧美自拍视频| 国模人体一区二区| 免费在线看成人av| 欧美激情二区三区| 国产高潮呻吟久久| 欧美一区一区| 日本乱码高清不卡字幕| 日韩欧美一级在线| 国产乱子伦三级在线播放| 国产一区二区视频在线| 国产91精品久久久久| 少妇高潮一区二区三区喷水| 狼人精品一区二区三区在线| 欧美卡1卡2卡| 国产xxxxx视频| 黄色成人在线网| 亚洲国产精品ⅴa在线观看| 国产精品久久久久久久久久久久午夜片| 激情视频网站在线观看| 国产精品porn| 三级精品视频久久久久| 亚洲一区二区三区无码久久| 精品国产亚洲一区二区三区在线 | 亚洲巨乳在线观看| 亚洲精品久久久久久动漫器材一区 | 欧美精品在线播放| www.涩涩爱| 久久爱www成人| 日韩av网站电影| 三上悠亚 电影| 99热这里有精品| 欧美亚洲动漫精品| 日韩视频第二页| 国产福利电影在线播放| 亚洲在线成人精品| 国产精品一二三在线观看| 天天影视久久综合| 国产日韩精品一区| 欧美日韩综合另类| 欧美色图另类| 久久蜜桃一区二区| 另类欧美小说| 青青草在线免费视频| av亚洲精华国产精华精| 国产精品毛片一区视频| 黄色av网址在线| 成人福利电影精品一区二区在线观看| 亚洲最大的免费| 国产精品无码AV| 国产美女主播视频一区| 91九色视频导航| 国产熟女一区二区三区四区| 国产一区二区三区在线观看免费| 91精品久久久久久久久久| 在线视频 91| 精品一区二区三区蜜桃| 亚洲自拍欧美另类| 亚洲第一天堂网| 波多野结衣中文一区| 成人综合电影| 四虎影视在线观看2413| 91视频一区二区| 欧美午夜精品久久久久免费视| 美丽的姑娘在线观看免费动漫| 久久精品夜夜夜夜久久| 神马影院一区二区| 精品孕妇一区二区三区| 亚洲视频每日更新| 久青草视频在线播放| 成年人在线网站| 在线观看91视频| 久久久久久久久久一区| 玖玖玖视频精品| 亚洲激情国产精品| 这里只有久久精品| 日韩1区在线| 欧美巨大黑人极品精男| 国产福利拍拍拍| 日韩国产成人精品| 亚洲xxxxx| 亚洲aⅴ在线观看| 日本一区二区免费在线| 黄色片免费在线观看视频| 国产精品论坛| 欧美色爱综合网| 精品国产乱码久久久久夜深人妻| 青青久久av| 久久激情视频免费观看| 日本亚洲欧美在线| 奇米影视一区二区三区小说| 91久久精品www人人做人人爽| 神马一区二区三区| 国产精品免费视频一区| 国产成a人亚洲精v品在线观看| 密臀av在线播放| 欧美男生操女生| 亚洲av成人片色在线观看高潮| 日韩成人综合| 91精品国产电影| 国产模特av私拍大尺度| 2024国产精品| 糖心vlog在线免费观看| 97久久香蕉国产线看观看| 91精品国产色综合久久| 欧美狂猛xxxxx乱大交3| 欧美亚洲不卡| 91久久久久久久久久久| 激情综合闲人网| 亚洲激情成人在线| 国产又大又黄又粗的视频| 精品国产一区二区三区不卡蜜臂| 日韩在线资源网| 精品黑人一区二区三区| 成人avav影音| 成人午夜视频免费观看| 日韩深夜福利网站| 一区二区三区天堂av| 亚洲久久在线观看| 成人性色生活片免费看爆迷你毛片| 亚洲精品一品区二品区三品区| 国模私拍一区二区国模曼安| 日韩免费一区二区三区在线播放| 麻豆视频免费在线播放| 久久综合五月| 蜜桃视频成人| 92久久精品| 日韩免费一区二区三区在线播放| www.5588.com毛片| 久久99国产精品免费| 日韩精品久久久| 欧美私密网站| 亚洲精品视频网上网址在线观看| 国产一级片网址| 国产v日产∨综合v精品视频| 香蕉视频在线网址| 日韩毛片免费视频一级特黄| 在线精品视频视频中文字幕| 免费一级a毛片| 久久精品欧美一区二区三区麻豆| 国产l精品国产亚洲区久久| 日韩mv欧美mv国产网站| 97国产suv精品一区二区62| 黄色三级网站在线观看| 午夜精品久久久久久久99水蜜桃 | 日韩一级片免费看| 亚洲在线成人精品| 岛国精品资源网站| 国产精品美女| 久久99欧美| 免费观看欧美大片| 一级做a爰片久久毛片美女图片| 亚洲天堂男人av| 欧美韩国日本一区| 午夜一级免费视频| 欧美日韩免费观看一区=区三区| 91亚洲精品丁香在线观看| 欧美xxxx少妇| 日韩国产精品一区| 一级久久久久久| 国产精品毛片无遮挡高清| 中文字幕日韩久久| 国产专区一区| 农村寡妇一区二区三区| 午夜精品成人av| 色噜噜狠狠狠综合曰曰曰 | 亚洲免费视频观看| 中文字幕+乱码+中文乱码www | 日韩欧美视频免费在线观看| 成人在线视频你懂的| 日本精品久久电影| 午夜激情视频在线| 欧美本精品男人aⅴ天堂| 国产91精品一区| 中文字幕电影一区| 黑人巨大猛交丰满少妇| 国产欧美69| 亚洲欧美日韩精品久久久| 国产精品免费精品自在线观看| 久久久久久成人精品| 国产在线视频网址| 日韩一区二区视频在线观看| 成人精品在线看| 中文字幕中文字幕在线一区| 亚洲中文字幕无码一区| 青青草97国产精品免费观看无弹窗版| 在线观看成人免费| 久久99精品久久久久久园产越南| 91亚洲精品在线| 亚洲欧美一区二区三区| 久久这里只有精品视频首页| 无码精品人妻一区二区| 91麻豆精品91久久久久久清纯 | 欧美日韩一区二区三区在线看| 男女羞羞免费视频| 国产日韩影视精品| 漂亮人妻被黑人久久精品| 美女www一区二区| 国产精品国产亚洲精品看不卡| 日韩专区精品| 久久国产精品一区二区三区四区| av一级久久| 国产精品av在线播放| 青春草在线免费视频| 中文字幕亚洲二区| 欧美孕妇性xxxⅹ精品hd| 日韩视频一区在线观看| 最近中文字幕av| 精品成人在线视频| 免费一级片视频| 一区二区中文字幕在线| 少妇久久久久久久久久| 不卡视频免费播放| 亚洲成a人无码| 国产在线播精品第三| 国产天堂在线播放| 亚洲欧美大片| 久久国产精品网| 欧美1区2区| 亚洲欧洲一二三| 精品少妇av| 久久久久久国产精品一区| 99久久人爽人人添人人澡 | 一级中文字幕一区二区| 精品视频第一页| 中文字幕av免费专区久久| 在线免费观看黄色小视频| 99久久免费国产| 在线天堂www在线国语对白| 成人美女视频在线观看| 欧美一级大片免费看| 国产老肥熟一区二区三区| 亚洲欧美日韩一级| 免费人成在线不卡| 天天操天天爽天天射| 日韩精品乱码免费| 日韩一级免费在线观看| 久久99伊人| 日本在线视频www| 亚洲欧美日韩国产一区二区| 午夜肉伦伦影院| 日韩中文字幕av电影| 一本久道综合色婷婷五月| 久久久久久黄| 美女黄色片视频| 美国毛片一区二区三区| 男人午夜视频在线观看| 国产精品自拍网站| 亚洲乱妇老熟女爽到高潮的片| 国产成人日日夜夜| 国产综合内射日韩久| 北岛玲一区二区三区四区| 国产熟女高潮一区二区三区| 91性感美女视频| 中文字幕av久久爽一区| 国产精品剧情在线亚洲| 久久国产高清视频| 亚洲国产日韩av| 久久黄色精品视频| 欧美在线观看18| 国产精品久久久久久久久久久久久久久久| 欧美老肥妇做.爰bbww| 超碰福利在线观看| 亚洲第一天堂av| 韩国中文字幕2020精品| 最新69国产成人精品视频免费| 在线免费看a| 欧美日本亚洲视频| 亚洲精品国产精品国产| 国产精品网红福利| 99re热精品视频| 热re99久久精品国产99热| 97人人精品| av免费观看大全| 日韩国产欧美三级| 亚洲 自拍 另类 欧美 丝袜| 91丝袜美腿高跟国产极品老师 | 欧美影院一区二区三区| 国产精品无码白浆高潮| 日韩av影视综合网| 在线a免费看| 午夜欧美不卡精品aaaaa| 福利一区和二区| 国产一区国产精品| 久久激情电影| 一区二区传媒有限公司| 经典一区二区三区| 中文字幕在线免费看线人| √…a在线天堂一区| 日韩欧美三级视频| 91精品国产色综合久久不卡蜜臀 | 久久久人成影片一区二区三区| 欧美黄色网页| 不卡视频一区| 日韩精品久久久久久久电影99爱| 亚洲 自拍 另类小说综合图区| 蜜臀精品一区二区三区在线观看| 中文字幕 日本| 亚洲视频综合在线| 国内av在线播放| 亚洲国产高清自拍| 成人福利片网站| 国产精品久久久久久久久久ktv| 一区二区三区亚洲变态调教大结局 | 亚洲伊人观看| 野花视频免费在线观看| 亚洲国产经典视频| 亚洲日本视频在线观看| 日韩精品在线一区二区| 亚洲麻豆精品| 国产成人精品最新| 精品丝袜久久| 免费在线黄网站| 国产麻豆日韩欧美久久| 日本视频在线免费| 日本道精品一区二区三区| 香蕉视频黄色片| 久久久噜噜噜久久中文字免| 欧美成年网站| 艳母动漫在线免费观看| 久久国产综合精品| 超薄肉色丝袜一二三| 欧美性猛交xxxxx水多| 污污视频在线免费看| 国内外成人免费激情在线视频| 精品一区二区三区中文字幕视频| 亚洲日本一区二区三区在线不卡| 久久一日本道色综合久久| 亚洲天堂资源在线| 亚洲高清视频在线| 亚洲欧美强伦一区二区| 欧美黄色成人网| eeuss鲁片一区二区三区 | 国产精品毛片| 国产熟女高潮一区二区三区| 香蕉av福利精品导航| 国产成人无码www免费视频播放| 欧美大片在线看免费观看| 一区三区自拍| 人妻夜夜添夜夜无码av| 99久久综合99久久综合网站| 亚洲国产精品成人无久久精品| 精品国产91久久久久久久妲己| 草美女在线观看| 国产亚洲情侣一区二区无| 国产日本精品| 久操视频免费看| 欧美少妇性性性| 国产理论在线观看| 99久久精品无码一区二区毛片| 亚洲夜间福利| 特级西西人体wwwww| 色婷婷国产精品久久包臀| 国产午夜在线视频| 国产欧美日韩精品在线观看| 91亚洲国产成人久久精品| 黄色a级三级三级三级| 亚洲国产综合人成综合网站| 天天操天天爱天天干| 国产a级全部精品| 欧美韩日高清| 日韩精品――色哟哟| 精品福利在线视频| 国产中文在线视频| 91在线国产电影| 亚洲欧洲一区| 蜜桃久久精品成人无码av| 欧美福利视频一区| jizz一区二区三区| 日本一区二区三区四区在线观看| 免费av成人在线| 国产一级特黄毛片| 国产亚洲精品久久久久动| 精品久久国产一区| koreanbj精品视频一区| 国产精品久久毛片a| 亚洲第一大网站| 国产精品久久综合av爱欲tv| 中文无码久久精品| 国产传媒第一页| 欧美乱妇一区二区三区不卡视频| 岛国片av在线| 亚洲精品中字| 99精品视频一区二区| 97精品人妻一区二区三区香蕉 | 欧美人与动牲交xxxxbbbb| 久久久久久久久久久99999| 国产精品久久久久久69| 欧美亚洲第一区| 91精品91| 精品人伦一区二区| 精品美女在线观看| 欧美午夜三级| 国产l精品国产亚洲区久久| 亚洲精品高清在线| 在线国产91| 免费日韩电影在线观看| 丰满放荡岳乱妇91ww|