将createFireworks
方法改造如下
function createFireworks(x,y,text=“”){
if(text!=“”){
//绘制文字
}else{
//原有的烟花代码
}
}
传递一个text
参数,当此参数不为空时,我们进入文字烟花的绘制逻辑。
var fontSize = 120;
var textHeight = fontSize;
context.font=fontSize+“px Verdana”;
context.fillStyle = “#ffffff”;
context.fillText(text,0,textHeight);
获取点阵数组
======
这样我们就能把字绘制在画布上了,接着我们使用getImageData
来获得并裁剪点阵信息,因为我们只要一部分的点阵。
var imgData = textctx.getImageData(0,0,textWidth,textHeight);
for (var h = 0; h < textHeight; h+=gap) {
for(var w = 0; w < textWidth; w+=gap){
var position = (textWidth * h + w) * 4;
var r = imgData.data[position], g = imgData.data[position + 1], b = imgData.data[position + 2], a = imgData.data[position + 3];
}
}
这样我们就拿到了画布里文字绘制区域的全部点阵数据,数据的格式为
[r,g,b,a,r,g,b,a,r,g,b,a]
我们通过一个gap
值来跳跃间隔裁剪数据。由于画布是黑色,所以r
,g
,b
都为0
的点阵我们就不绘制了,现在将间隔的点阵信息再次绘制到画布中。
var fx = x + w - textWidth/2;
var fy = y + h - textHeight/2;
context.fillStyle = “#ffffff”;
context.fillRect(fx,fy,1,1);
我们就会看见~
太棒了,这就是我们最终需要的文字烟花粒子的终点信息呀!
现在我们遍历全部的点阵,并创建烟花粒子吧!
for (var h = 0; h < textHeight; h+=gap) {
for(var w = 0; w < textWidth; w+=gap){
var position = (textWidth * h + w) * 4;
var r = imgData.data[position], g = imgData.data[position + 1], b = imgData.data[position + 2];
if(r+g+b==0)continue;
var p = {};
p.x = x;
p.y = y;
p.fx = x + w - textWidth/2;
p.fy = y + h - textHeight/2;
p.size = Math.floor(Math.random()*2)+1;
p.speed = 1;
setupColors§;
particles.push§;
}
}
文字烟花来了
======
至此,文字烟花效果,我们就实现了!!!
======================================================================
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
基础面试题
CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
主要内容包括:HTML,CSS,JavaScript,浏览器,性能优化等等
视频,并且后续会持续更新**
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-XnraKF5U-1711865204932)]
基础面试题
CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
主要内容包括:HTML,CSS,JavaScript,浏览器,性能优化等等