项目实践|青训营笔记

96 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第4天

我们组准备的项目是自定义的项目,具体表现为一个在线画板,内容包括但不限于基础的画笔,调色,撤回等。 在实际开发的过程中,碰到了很多困扰我很久的bug,下来来分别讲一讲。

首先碰到的问题就是布局问题,因为我是前端的初学者,在经历了快速入门之后,我也仅仅是达到了看懂代码的程度,距离独立写代码还有很长的一段路,所以只能是临时去查找相关的资料并一步步调试,在这里我要感谢MDN这个网站,我对于前端的很多知识都是从该网站看下来的。

接着就是对于画布功能的问题,我们对于线段的画法都是先确定一个起始点,然后确定一个结束点,将两点连接起来,但是这里有一个问题,我们起始点确定后,结束点怎么确定,虽然听起来很奇怪,但是确实困扰了我好一会,为什么呢,因为我们在画线段的时候,鼠标是移动的,从鼠标点击的时候确定起始点,鼠标移动确定结束点,最后连接两个点,这就有矛盾了,因为我们要实时看到线段的情况,所以如果是这样的逻辑,就会画出一堆从起始点出发到鼠标经过位置的直线,这样的直线可不行,所以我们稍微修改了一下,我们先保存在画直线之前的画面,然后清空画布,在一个空的画布上画直线,然后添加到保存的画面中,很好,到这里问题解决了,但是事实并不如此,我们在每一次画直线的时候,画布都会刷新一次,因为使用了清空函数,这样子对于用户来说是一个很不好的体验。那怎么办呢,已经解决到这里了,也不能说是就放弃这个功能吧。

所以我们提出了一个新的方案,我们在原本的画布下方又添加一个真画布,在每一次鼠标抬起之后就将表层画布的内容添加到真画布中,然后再清空表画布,这样子有一个好处,就是我们清空画布和使用画笔是异步的,就不会出现画布闪动的情况,到此这个问题完美解决。