我正在开发一个简单的图表工具,使用flex在平面图上形状。 首先,我使用的是一个简单的20 * 20网格。
但真正很酷的东西是自动斧头磁铁效果,这就是我称之为至少为什么我的意思是因为我制作了一个balsamiq的小视频。
如您所见,它在垂直水平边框和中心轴上对齐。
您认为这些算法的工作原理如何: 现在我将不做任何轮换。
在左上角 x,y 选择宽度 w 和高度 h 的形状 S1 。
查看与两个区域相交的所有形状:
从xmin = x,xmax = x + w,对于y> 0
一旦我有相关的形状列表,我检查是否有任何条件匹配:
当我使用'='时,它的近似值+或 - 2像素会产生所需的“磁铁”效果
并且考虑到20 px
的填充磁铁您对此有何想法?
答案 0 :(得分:0)
我写了Balsamiq的捕捉算法。你很亲密。我们做的一个“聪明”的事情(如果我自己可以这么说),就是预先填充两个稀疏数组,并使用捕捉坐标onMouseDown,这样它们就可以轻松/快速/便宜地查找onMouseMove。我在onMouseDown做的是:
让我们谈谈x坐标(然后对y重复同样的事情):
然后当你执行onMouseMove时,你会看到你正在拖动x和y的控件。 xSnappingPositions和ySnappingPosition中是否存在与左边缘匹配的东西?如果是这样,转到保存在数组中的值,而不是使用鼠标检测到的位置(即对齐它)。重复检查右边缘,中心等
我希望这有帮助!