事件驱动--记录

需要知道的似乎很多,需要表达的似乎很少

简述

事件,即发生了一件事儿。

  1. 对于使用事件驱动的人(业务开发人员)来说,有两个存在:一是事件源(就是事儿发生的地方,)、二是事件监听函数(事件发生的时候需要执行的代码)。
  2. 事件源可能有很多种,事件监听也有很多。
  3. 二者要发生联系,需要一个第三方的事件管理机制(系统)来实现。也就是事件系统,既能获取事件源中事件发生的信息,也能触发对应事件的所有监听。

概念

事件: 是一个信息。由事件源产生,事件系统使用,也会传递给事件监听。
事件源: 触发事件的存在。
1. 有预定义的如键盘鼠标等用户操作事件;
2. 有文件读写、网络连接等某项流程性的任务的阶段性事件;
3. 也可以是代码中自己写的事件触发代码。
事件监听: 一段注册到事件系统的程序代码,在事件发生时自动调用(就是不需要用户处理,有事件系统调用)。
事件(管理)系统: 支持事件驱动的系统就是或者说包含事件管理系统。

主要是看zrender源码时想写了。记录下
zrender是mvc模式的其中的c是有Handler类定义的,这个就可以看作是一个事件管理系统。Handler中定义了几种事件(都是鼠标事件),用proxy代表事件源(一般是DOM,鼠标等事件只能是先有操作系统捕获然后一步一步传递下来),dispatch方法触发事件监听(监听是我们使用zrender库写代码时写的)

用户事件

各种事件中,用得最多的是用户交互的事件,最常见的就是鼠标事件和键盘事件。

鼠标事件是用户可视化界面上的事件。用户界面一般是树形的层次结构模型。树的根节点是操作系统,然后是各种应用的窗口。到具体应用中,各种界面也常是一种树形的层次结构模型,以标签、元素、组件等概念层层嵌套。如html的标签、wpf中的xaml、android中使用xml。

此时事件管理系统在监听事件、触发事件监听的操作中,就需要考虑这种树形层次结构中体现的父子关系带来的特性。如:用户用鼠标点击了子元素,父元素也是被点击了的。

所以对于这种树形的层次结构的模型,在事件系统中,我们需要定义两个逻辑:事件捕获、事件冒泡。体现了事件(信息)传递的流程。

  1. 事件捕获: 事件从树形结构的根部向具体的节点传递。
  2. 事件冒泡: 事件从具体节点向树形结构的根部向上传递。

事件监听函数的触发有两个时机;还有事件是否向下继续捕获、或者向上继续冒泡。

zrender也是一种树形结构,最顶级的是zrender对象,然后是Group和Element组合成一个树形。
zrender中监听了proxy的事件(click/mousedown/mouseup/mousewheel/dbclick/contextmenu),然后直接findHover获取具体的节点。在dispatchToElement方法中,直接触发监听。然后根据条件实现事件冒泡。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值