国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > HTML > 正文

一款html5 canv,as實現的圖片玻璃碎片特效

2020-03-24 15:56:10
字體:
來源:轉載
供稿:網友

今天要為大家帶來一款html5 canvas實現的圖片玻璃碎片特效。圖片以玻璃碎片的形式出現到界面中,然后似玻璃被打碎的效果漸消息。效果圖如下:





一款html5 canvas實現的圖片玻璃碎片特效





html代碼:

代碼如下:

<img src="city_copy.jpg" id="src_img" class="hidden">

<div id="container" style="-webkit-perspective: 500px;">

<div>

<script src="delaunay.js"></script>

<script src="TweenMax.min.js"></script>



js代碼:

代碼如下:

// canvas settings

var imageWidth = 768,

imageHeight = 485;

var vertices = [],

indices,

boxes = [];

var image,

fragments = [],

container = document.getElementById('container');

window.onload = function () {

image = document.getElementById('src_img');

triangulate();

makeBoxes();

makeFragments();

};

function triangulate() {

var x,

y,

dx = imageWidth / 8,

dy = imageHeight / 8,

offset = 0.5;

for (var i = 0; i <= imageWidth; i += dx) {

for (var j = 0; j <= imageHeight; j += dy) {

if (i && (i !== imageWidth)) x = i + randomRange(-dx * offset, dx * offset);

else x = i;

if (j && (j !== imageHeight)) y = j + randomRange(-dy * offset, dy * offset);

else y = j;

vertices.push([x, y]);

}

}

indices = Delaunay.triangulate(vertices);

}

function makeBoxes() {

var p0, p1, p2,

xMin, xMax,

yMin, yMax;

for (var i = 0; i < indices.length; i += 3) {

p0 = vertices[indices[i + 0]];

p1 = vertices[indices[i + 1]];

p2 = vertices[indices[i + 2]];

xMin = Math.min(p0[0], p1[0], p2[0]);

xMax = Math.max(p0[0], p1[0], p2[0]);

yMin = Math.min(p0[1], p1[1], p2[1]);

yMax = Math.max(p0[1], p1[1], p2[1]);

boxes.push({

x: xMin,

y: yMin,

w: xMax - xMin,

h: yMax - yMin

});

}

}

function makeFragments() {

var p0, p1, p2,

box,

fragment;

TweenMax.set(container, { perspective: 500 });

var tl0 = new TimelineMax({ repeat: -1 });

for (var i = 0; i < indices.length; i += 3) {

p0 = vertices[indices[i + 0]];

p1 = vertices[indices[i + 1]];

p2 = vertices[indices[i + 2]];

box = boxes[i / 3];

fragment = new Fragment(p0, p1, p2, box);

var rx = randomRange(30, 60) * ((i % 2) ? 1 : -1);

var ry = randomRange(30, 60) * ((i % 2) ? -1 : 1);

var tl1 = new TimelineMax();

TweenMax.set(fragment.canvas, {

y: box.y - 1000

});

tl1.to(fragment.canvas, randomRange(0.9, 1.1), {

y: box.y,

ease: Back.easeOut

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 景泰县| 新邵县| 阳谷县| 河北省| 荥阳市| 灵台县| 荃湾区| 阿拉尔市| 若羌县| 永顺县| 黑龙江省| 大名县| 临沂市| 镇原县| 新和县| 康平县| 宁都县| 胶州市| 洞口县| 正阳县| 荆州市| 信宜市| 昆明市| 中江县| 北海市| 陆良县| 永川市| 榆树市| 武乡县| 西畴县| 赤壁市| 伊宁市| 沈阳市| 舒城县| 吉木乃县| 桓台县| 唐河县| 景东| 阿图什市| 罗江县| 衡阳市|