图形编辑器中JS怎么实现拖拽阻塞


本篇内容主要讲解“图形编辑器中JS怎么实现拖拽阻塞”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“图形编辑器中JS怎么实现拖拽阻塞”吧!在图形编辑器中,想象这么一个场景,我们撤销了一些重要的操作,然后想选中一个图形,看看它的属性。你点了上去,然后你发现你再也无法重做了。你以为你点了一下,但其实你点击的时候,鼠标还是小小移动了一点,飘了一个像素点。对编辑器来说,它识别到让图形移动一个像素点的操作,就生成了一个新免费云主机域名的版本,然后重做栈(redoStack)被清空了,你退回前的操作就没了。为了解决这类用户微小操作的问题,我们可以巧妙地给拖拽行为加一个 阻塞阈值。具体就是就是按下鼠标后,移动鼠标的距离要大于某个值,我们才认为发生了拖拽,并执行对应工具的逻辑。按下鼠标然后移动,如果移动的位移太小,矩形是不会被移动的,直到达到一定位移阈值后,矩形才会乖乖听话跟随鼠标进行移动
阈值表示位移距离,使用的是视口坐标系,而不是场景坐标系。原来的逻辑:鼠标按下时,isPressing 设置为 true,表示发生了鼠标按下事件。此时鼠标再移动,我们就能知道这是一个 “拖拽” 的行为,即按下鼠标不放然后移动鼠标的行为。此时调用工具对象的 drag 方法。最后鼠标释放,将状态 isPressing 重置。现在我们进行改造。核心思路是引入 isEnableDragging 状态,表示鼠标移动时,是否达到移动的条件。我们在鼠标移动事件中,计算鼠标按下和鼠标移动之间的距离是否超过某个值,如果超过阈值,就将isEnableDragging 状态转换为 true。然后判断isEnableDragging 为 true,就调用工具对象的 drag 方法。需要注意的是,不要只用位移距离来判断是否可以拖拽,要配合状态。否则突破阈值后,又移动回来,你会发现你又卡住了,因为此时阈值因为再次计算,没能达到阈值。所以加了个isEnableDragging 状态,在第一次突破阈值设置为 true 后,就再也不用计算位移了,之后一直都是可拖拽状态,直到鼠标释放重置状态。到此,相信大家对“图形编辑器中JS怎么实现拖拽阻塞”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: C#怎么实现分组构造

这篇文章主要介绍了C#怎么实现分组构造的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C免费云主机域名#怎么实现分组构造文章都会有所收获,下面我们一起来看看吧。usingSystem;usingSystem.Text.Regular…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 05/18 15:51
下一篇 05/18 15:51

相关推荐