这次给大家带来用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做恐怖动画的详细内容,更多请关注云资源网其它相关文章!
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
9.本站默认解压密码为:www.sudo1.com
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。
我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!
云资源网 » 用H5的canvas做恐怖动画
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
9.本站默认解压密码为:www.sudo1.com
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。
我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!
云资源网 » 用H5的canvas做恐怖动画
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 你们有qq群吗怎么加入?