一、项目概述

二、项目架构

三、几何计算难点

四、鼠标事件处理

五、数据保存与导出

六、文本处理

四、鼠标事件处理

在所有处理器中,鼠标事件处理器是最为复杂的,因为在整个页面中,基本可以使用鼠标完成所有功能。最常见的鼠标动作有三个,分别是左键按下、滑动、左键弹起。有些场合还需要用到双击和右键两个动作,例如双击编辑文字,右击取消添加。除此之外,鼠标的动作还需要配置辅助键,例如CTRL和SHIFT,在拖动图元变换时会用到这两个键。

一次鼠标点击,包括了按顺序执行的按下、滑动和弹起三个动作,这中间的情况相当多,以下是其中一部分:

当鼠标按下时,我们需要判断按下的地方是在图元上(实际上还要分是否选中、是否锁定等情况)还是在空白的地方。若是,接下来,我们要看鼠标的动作是滑动还是弹起。若是弹起,一个点击事件就完成了。若是滑动,一般就会引发图元变换的过程。而这一过程需要判断是否按下了CTRL键或SHIFT键,它们会触发不同的动作。最后鼠标弹起,完成一次事件。

可以看到,对于上面的动作,如果不断使用if/else去处理,这个代码层次将会非常多和冗长,难以管理。

可以使用状态机的方法去解决这一问题。例如,对于上述动作,可以列出如下的表格:

原状态 动作 条件 新状态
初始状态 鼠标按下 在图元上 状态1
在空白处 状态2
状态1 鼠标弹起 初始状态
鼠标滑动 按下CTRL 状态3
没有按下CTRL 状态4
状态3 鼠标滑动 保持不变
鼠标弹起 初始状态
状态4 鼠标滑动 保持不变
鼠标弹起 初始状态
状态2 ……

可以看到,利用状态机的方法,代码只会有两层。每个动作之后,只需要对当前动作作出处理(例如改变光标、记录当前位置等),然后改变状态即可。下面列出一段示例伪代码:

switch 当前状态case 初始状态if 动作=按下if 在图元上作出处理当前状态=状态1if 在空白处作出处理当前状态=状态2case 状态1if 动作=弹起作出处理当前状态=初始状态if 动作=滑动if CTRL作出处理当前状态=状态3if !CTRL作出处理当前状态=状态4case 状态3……              

在线流程图和思维导图开发技术详解(四)相关推荐

  1. 在线流程图和思维导图开发技术详解(三)

    一.项目概述 二.项目架构 三.几何计算难点 四.鼠标事件处理 五.数据保存与导出 六.文本处理 三.几何计算难点 3.1 矩形变换 我们先来看没有旋转的情况.不旋转的情况是比较简单的,只是情况比较多 ...

  2. 在线流程图和思维导图开发技术详解(二)

    一.项目概述 二.项目架构 三.几何计算难点 四.鼠标事件处理 五.数据保存与导出 六.文本处理 二.项目架构 2.1 系统架构 项目系统架构如下图所示: UI元素即HTML DOM元素.项目打开时, ...

  3. 在线流程图和思维导图开发技术详解(五)

    一.项目概述 二.项目架构 三.几何计算难点 四.鼠标事件处理 五.数据保存与导出 六.文本处理 五.数据保存与导出 5.1 数据保存 一张流程图,实际是一个图元列表,也就是Array<Comp ...

  4. 在线流程图和思维导图开发技术详解(六)

    一.项目概述 二.项目架构 三.几何计算难点 四.鼠标事件处理 五.数据保存与导出 六.文本处理 六.文本处理 6.1 两种富文本展示方式 本项目显示的文本皆是富文本,也就是在一个框里面,文本有多种样 ...

  5. 推荐一个在线创作流程图、思维导图软件—ProcessOn

    转载自 推荐一个在线创作流程图.思维导图软件-ProcessOn 最近要画流程图,破解了半天Visio2016没搞定,2016的估计都被封了,Visio收费又过贵,又不想折腾低版本的破解,所以找了个在 ...

  6. 推荐一个在线绘图工具ProcessOn----支持流程图、思维导图、UML等

    我们常用来绘制流程图等的工具一版会使用visio等,但是它是一款收费软件,而且不是太易用,今天推荐一款在线绘图工具ProcessOn,不仅功能强大,而且快捷易用,还有大量优秀的模板可供使用. 邀请连接 ...

  7. 免费在线作图,思维导图,流程图,实时协作

    www.processon.com 免费在线作图,思维导图,流程图,实时协作

  8. 流程图、思维导图、网络拓扑图、组织结构图——ProcessOn在线工具及增加文件数方法

    可网页在线画流程图之类的,还有模版可以参考. ProcessOn 支持流程图.思维导图.原型图.UML.网络拓扑图.组织结构图等 ProcessOn在线工具: https://www.processo ...

  9. confluence 制作流程图_「每周开方」 高效制作流程图、思维导图

    提升工作效率,并且可以自成一套职场PPT的导图.流程图! 这周的「每周开方」公子要分享强大的"思维导图"及"流程图"制作网站!在职场中导图的重要性应该不需要公子 ...

最新文章

  1. 计算机的表格如何加入客标,怎么在电脑上制作入库表格?
  2. i2s传输中左右声道数据格式
  3. mysql bundle.tar_linux 下安装mysql-5.7.16-1.el6.x86_64.rpm-bundle.tar
  4. sklearn线性回归
  5. JavaFX UI控件教程(十六)之Separator
  6. java学习(71):GUL边界布局管理器
  7. 面试稳了!网易资深工程师揭秘运维面经!
  8. 真实临在--摘自{《信仰在我家》}
  9. CentOS7.6安装WirёGuαrd(一)
  10. Nordic nRF52840 入门学习
  11. 如何使用 LumaQQ 核心 API
  12. 计算机cpu型号在哪看,cpu型号,教您电脑cpu型号怎么看
  13. 一篇文章理清产品、运营、营销之间的概念和关系
  14. 世界十大工业自动化公司排名
  15. 用html制作粒子线条,html5 canvas跟随鼠标粒子线条动画特效
  16. String Permutation
  17. java的正向代理和反向代理
  18. QT 打印中文字符显示C2001:常量中有换行符解决办法
  19. 单例模式之懒汉式单例模式
  20. 删除浏览器的cookie

热门文章

  1. 计算机打开程序乱码,打开软件乱码怎么解决,详解win7电脑打开软件乱码的解决方法...
  2. java毕业设计旅拍平台源码+lw文档+mybatis+系统+mysql数据库+调试
  3. 2013计算机学科排名,2013年美国大学排名计算机专业排名情况
  4. python进行Excel处理
  5. 图片怎么在线转换成PDF格式
  6. ROS发布/订阅Float64MultiArray数组类消息(C++和Python相互发布和订阅)
  7. NoSQL在腾讯的应用实践
  8. Kinect 开发 —— 深度信息(二)
  9. 襄阳市2022年高新技术企业申报奖励补贴以及认定条件汇总!
  10. OutputStreamWriter Writer PrintWriter