您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

用H5的canvas做恐怖动画

2024/4/16 15:58:03发布5次查看
这次给大家带来用h5的canvas做恐怖动画,用h5的canvas做恐怖动画的注意事项有哪些,下面就是实战案例,一起来看一下。
canvas可以实现一些有趣的效果,动画实现。以一个简单的页面实现了解一下基础的画图方法。
效果
万圣节快乐
预备知识
let canvas = document.getelementbyid('canvas');let context = canvas.getcontext('2d');
开始路径
context.beginpath();
beginpath()方法在画布上开始一条绘制路径,或重置当前的路径。
移动路径
context.moveto();
moveto()方法把路径移动到画布中指定点,不创建线条。
添加线条
context.lineto();
lineto()方法添加一个新点,在画布中创建该点到指定点的线条。
画图drawimage
context.drawimage(image,x,y);
drawimage()方法可以在画布上绘制图像、画布或视频,也可以绘制图像的某些部分,增加/减少图像的尺寸。
获取像素数据
context.getimagedata(x,y,width,height);
getimagedata()方法可以获取画布imagedata对象,该对象指定了矩形的像素数据。
在imagedata对象中每个像素都存在rgba值,以数组形式存储在data属性中。
放回像素数据
context.putimagedata(imagedata,x,y);
putimagedata()方法将获取的图像数据放回到画布上。
实现
html
<canvas id="canvas"></canvas><button id="click" class="switch">click</button>
css
html,body,canvas { width: 100%; height: 100%; margin: 0; }.switch { position: absolute; top: 70%; right: 10%; width: 50px; height: 50px; border-radius: 50px; outline: none; cursor: pointer; animation: switch-animate alternate infinite ease 1s 0s; } @keyframes switch-animate { from { box-shadow: 0 0 30px #ece9c5; } to { box-shadow: 0 0 100px #eae5a7; } }
js
(function () { class halloween { constructor(id) { this.canvas = document.getelementbyid(id); this.ctx = this.canvas.getcontext('2d'); this.w = this.canvas.width; this.h = this.canvas.height; this.data = []; } //初始画布 initdraw(img) { this.w = this.canvas.width = img.width; this.h = this.canvas.height = img.height; this.ctx.drawimage(img, 0, 0); this.data = this.ctx.getimagedata(0, 0, this.w, this.h); } //显示文字 drawtext() { this.ctx.font = '60px verdana'; this.ctx.fillstyle = '#ffffff'; this.ctx.filltext('万圣节快乐', 350, 280); } //闪电 lightning() { let ctx = this.ctx; ctx.strokestyle = '#fff'; ctx.linewidth = 2; ctx.beginpath(); ctx.moveto(800, 10); ctx.lineto(600, 100); ctx.lineto(500, 200); ctx.stroke(); ctx.beginpath(); ctx.moveto(600, 100); ctx.lineto(650, 170); ctx.stroke() } //打雷 thunder() { let timer = math.floor(800 * math.random()); this.reverse(); this.lightning(); this.drawtext(); settimeout(() => { this.reset(); }, timer); } //反转画布 reverse() { let imgdata = this.ctx.getimagedata(0, 0, this.w, this.h); for (var i = 0, len = imgdata.data.length; i < len; i += 4) { imgdata.data[i] = 255 - imgdata.data[i]; imgdata.data[i + 1] = 255 - imgdata.data[i + 1]; imgdata.data[i + 2] = 255 - imgdata.data[i + 2]; imgdata.data[i + 3] = 255; } this.ctx.putimagedata(imgdata, 0, 0); } //重置画布 reset() { this.ctx.putimagedata(this.data, 0, 0); } } let halloween = new halloween('canvas'); let canvas = document.getelementbyid('canvas'); let ctx = canvas.getcontext('2d'); let img = new image(); img.src = '/images/halloween.png'; img.onload = () => { halloween.initdraw(img); } document.getelementbyid('click').onclick = () => { halloween.thunder(); } })();
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
前端开发中的svg动画
canvas怎样做出黑色背景带特效碎屑烟花
以上就是用h5的canvas做恐怖动画的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录