UI事件定位--HitTest
In computer graphics programming, hit-testing (hit detection, picking, or pick correlation) is the process of determining whether a user-controlled cursor (such as a mouse cursor or touch-point on a touch-screen interface) intersects a given graphical object (such as a shape, line, or curve) drawn on the screen.Hit-testing may be performed on the movement or activation
举个例子,在大家看来,点击一个HTML的<a>标签链接打开一个新页面,看起来非常理所当然的一件事情,在WebKit内核里面,却做了非常多的事情,首先,要获取当前点击的位置,带着这个位置坐标信息,去做一个HitTest。所谓的HitTest就是探测下当前的点击的内容是什么,怎么才能知道当前点击的是什么呢?HitTest会遍历整个DomTree, LayerTree,看看当前的坐标位置是什么内容,是空白?还是文字?还是图片,还是链接?这些信息都可以通过遍历DomTree, LayerTree来实现,最终将遍历的探测结果以HitTestResult的形式返回,最终通过返回的类型来判断,如果是一个链接,则回调对应的回调函数,最终实现通过点击打开一个新的页面。
作者:三旬叔
链接:https://www.zhihu.com/question/22799206/answer/148330651
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
最新文章
- java统计字符串单词的个数
- jQuery静态方法noConflict的使用和源码分析
- 使用 PowerDesigner 和 PDMReader 逆向生成 MySQL 数据字典
- 一个书店管理系统java
- poj2369 Permutations ——置换群
- bzoj2789
- HTML中常用鼠标样式
- Activiti+oracle 启动项目时不能自动建表或更新表的问题分析及解决办法
- [cocos2d-x] 让精灵响应触摸 并把方向旋转到相对应的角度
- web压缩gzip响应
- WORD 无格式粘贴 2003 2007 MacOS2011
- (译)UEFI 启动:实际工作原理
- Flume-ng源码解析之Channel组件
- 去掉标题栏的方法(使用requestWindowFeature(Window.FEATURE_NO_TITLE);为什么失效)
- sublime text 3双击选择无法选择$符号
- Nginx 反向代理接收用户包体方式
- 面向对象—的__new__()方法详解
- Jenkins持续集成之小试牛刀
- curl 抓取图片
- thymeleaf 的内置对象