PIXI.js源码解析(5)之事件管理器——InteractionManager
2017-09-24 23:02
309 查看
在基本上所有的渲染框架中,都会提供原始事件的分发功能,比如监听某个对象的鼠标按下弹起,触控,等等。而且不单单是渲染引擎,原始事件的监听和分发几乎是所有gui框架的构建基础。
pixi中的原始事件分发主要是由InteractionManager完成的,InteractionManager首先捕获到原始事件,之后需要确定事件的触发对象,之后使用事件流逐层传递,事件在传递过程中一共会经过三个阶段,不清楚的可以搜索事件流,百度有很多详细的文章讲解,这里就不多说了。
首先我们要明确原始事件是怎么来的,对于pixi来说,他的底层就是浏览器,所以原始事件其实是浏览器中的鼠标,键盘事件,浏览器不断追溯下去,总会到达操作系统的事件处理,熟悉winapi的朋友应该比较清楚了,winapi对于鼠标,按键信息的处理。
总而言之,InteractionManager捕获到了原始事件,但是这个事件并不能直接使用,因为该事件的上下文是浏览器,而不是渲染引擎,该事件所包含的鼠标坐标全是在浏览器坐标系中的,还需要经过转换。
所以InteractionManager做的第二件事就是确定该事件真正的触发对象,这里需要经过一系列的矩阵运算,简单来说就是从根对象开始,进行点和bound的碰撞,然后不断递进到子对象,直到最后一个真正触发该事件的子对象为止。
获得子对象以后,要做的事情就很明确了,对原始事件进行包装,然后使用子对象将其发射出去,之后子对象就会发送该事件,这里就不管InteractionManager什么事了,接下来就是事件系统的处理。这一点要明确一下,事件系统是和InteractionManager分离的,事件系统只是起到事件的发送和监听的功能,而InteractionManager是对原始事件的捕获,然后借用事件系统将其发送出去,除了原始事件之外,事件系统还可以发送自定义事件等等。
前面也说了,这种原始事件的处理不单单出现在渲染框架中,几乎所有的gui框架也都是这种思路,捕获原始事件,然后确定触发对象(根据点和包围框的碰撞测试),之后使用事件系统发送。
pixi中的原始事件分发主要是由InteractionManager完成的,InteractionManager首先捕获到原始事件,之后需要确定事件的触发对象,之后使用事件流逐层传递,事件在传递过程中一共会经过三个阶段,不清楚的可以搜索事件流,百度有很多详细的文章讲解,这里就不多说了。
首先我们要明确原始事件是怎么来的,对于pixi来说,他的底层就是浏览器,所以原始事件其实是浏览器中的鼠标,键盘事件,浏览器不断追溯下去,总会到达操作系统的事件处理,熟悉winapi的朋友应该比较清楚了,winapi对于鼠标,按键信息的处理。
总而言之,InteractionManager捕获到了原始事件,但是这个事件并不能直接使用,因为该事件的上下文是浏览器,而不是渲染引擎,该事件所包含的鼠标坐标全是在浏览器坐标系中的,还需要经过转换。
所以InteractionManager做的第二件事就是确定该事件真正的触发对象,这里需要经过一系列的矩阵运算,简单来说就是从根对象开始,进行点和bound的碰撞,然后不断递进到子对象,直到最后一个真正触发该事件的子对象为止。
获得子对象以后,要做的事情就很明确了,对原始事件进行包装,然后使用子对象将其发射出去,之后子对象就会发送该事件,这里就不管InteractionManager什么事了,接下来就是事件系统的处理。这一点要明确一下,事件系统是和InteractionManager分离的,事件系统只是起到事件的发送和监听的功能,而InteractionManager是对原始事件的捕获,然后借用事件系统将其发送出去,除了原始事件之外,事件系统还可以发送自定义事件等等。
前面也说了,这种原始事件的处理不单单出现在渲染框架中,几乎所有的gui框架也都是这种思路,捕获原始事件,然后确定触发对象(根据点和包围框的碰撞测试),之后使用事件系统发送。
相关文章推荐
- PIXI.js源码解析(1)——DisplayObject
- PIXI.js源码解析(4)——Texture
- PIXI.js源码解析(2)——Transform
- PIXI.js源码解析(3)——Container
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- Android事件分发机制完全解析,带你从源码的角度彻底理解
- 【转载】Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- android源码解析(二十七)-->HOME事件流程
- 【原创】when.js2.7.1源码解析
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- PureMVC(JS版)源码解析(十):Controller类
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- View 相关 Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- Android事件分发机制完全解析,带你从源码的角度彻底理解