ZRender實現粒子網格動畫實戰

2021-07-31 02:40:31 字數 2278 閱讀 3469

通過上面顯示的效果圖,可以看出,這種效果就是在canvas中生成多個可移動的點,然後根據點之間的距離來確定是否連線,思路比較簡單。

實現問題:

html:

id="main">

canvas>

css:

#main

這裡主要用到的形狀就是circleline,先引入這兩個元件:

['zrender',

'zrender/graphic/shape/circle',

'zrender/graphic/shape/line'],

function

(zrender, circle, line){}

var winh = window.innerheight; //同步頁面寬、高

var winw = window.innerwidth; //同步頁面寬、高

var opts = ;

var tid; //settimeout id,防抖處理

var particals = ; //用於儲存partical物件

var zr= zrender.init(main, );

zr.dom.style.backgroundcolor = opts.background; //設定背景色

window.addeventlistener('resize', function

(), 300); //這裡設定了300ms的防抖間隔

}, false);

效果:

總結一下這個類,需要以下屬性:

方法:這邊直接用es6的語法來建立類:

class partical {}
構造器:

constructor() 

this.element = new circle(,

style:

});};

更新位置座標方法:

updateposition()

if(this.y >= winh || this.y <= 0)

if(this.x > winw)

if(this.x < 0)

if(this.y > winh)

if(this.y < 0)

//更新位置座標

this.x += this.vector.x;

this.y += this.vector.y;

//更新形狀座標

this.element.shape.cx = this.x;

this.element.shape.cy = this.y;

this.element.dirty();

};

劃線方法:

drawlines()

this.lines = ; //刪除後,清空陣列

//遍歷各個點之間的距離

for(let i = 0; i < particals.length; i ++),

style: ,

});this.lines.push(l); //存入lines

zr.add(l); //加入zrender storage中}};

}

目前所有核心部分已完成,現在來初始化它:

var init = function

()};

效果:

開始動畫函式,讓粒子動起來,並生成連線線:

function

loop

() window.requestanimationframe(loop);

};

最終效果:

lang="en">

charset="utf-8">

documenttitle>

CAEmitterLayer實現粒子效果

caemitterlayer實現粒子效果 caemitterlayer 在ios 5中,蘋果引入了乙個新的 calayer 子類叫做 caemitterlayer caemitterlayer 是乙個高效能的粒子引擎,被用來建立實時例子動畫如 煙霧,火,雨等等這些效果。caemitterlayer ...

粒子濾波實現物體跟蹤

粒子濾波實現物體跟蹤的演算法原理 1 初始化階段 提取跟蹤目標特徵 該階段要人工指定跟蹤目標,程式計算跟蹤目標的特徵,比如可以採用目標的顏色特徵。具體到rob hess的 開始時需要人工用滑鼠拖動出乙個跟蹤區域,然後程式自動計算該區域色調 hue 空間的直方圖,即為目標的特徵。直方圖可以用乙個向量來...

粒子群演算法python實現

1 概述 粒子群演算法作為一種優化演算法,在很多領域都有應用。所謂優化,我的理解是對乙個問題求出它足夠好的解,目前的優化演算法有很多,如蟻群演算法 遺傳演算法等。粒子群演算法相對於這些演算法來說,它更簡單,而且有很快的收斂速度。2 演算法描述 舉乙個優化問題的例子,若求 粒子群演算法思想 於實際生活...