背景
编辑器中的绘制,要想做的足够好,是需要支持撤销形点的,因为作业员在绘制过程中,可能会点错位置,需要及时撤销,否则影响编辑效率。撤销我们知道,需要通过ID编辑器的history的undo来实现,那么意味着,每一次插入形点,都需要插入一版Graph。如何在兼顾渲染的情况下,保证每一版本的graph中的几何正确,以支持撤销?这篇文章提供一种实现思路。
渲染
这边简单说一下Sketchlayer(草稿图)的架构,就是选中的几何,我们用一个草稿图来单独渲染,以提高编辑效率。我们会隐藏原图层中的该要素,将其放入草稿图,高亮渲染,同时在鼠标移动过程中,高频更新几何的拖动点/绘制点,结束绘制后,清空草稿图,更新graph中该几何,触发原图层的重新渲染。
行为
绘制线是一个很基础的行为(behavior)。其核心逻辑在这个行为中实现。
首先,在behavior的add方法中,我们监听三个鼠标事件。
mouse:down
:插入形点
mouse:move
:更新最后一个形点
mouse:dblclick
:结束绘制
mouseDown
如果是首次点击,我们会创建一条线way,调用history.perform,推入一版graph中。这条线的两个坐标