一种基于像素的顶层对象检测及鼠标事件检测方法和装置制造方法及图纸

技术编号:3854923 阅读:289 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种基于像素的顶层对象检测方法,包括:获取所有目标显示对象像素点的数组,并设置基本变量;遍历数组中的每个显示对象像素点,确定显示对象当前像素点是否为透明。本发明专利技术还同时公开了一种基于像素的顶层对象检测装置、以及一种基于像素的鼠标事件检测方法和装置,采用本发明专利技术准确获取和识别基于像素的任意点目标显示对象,能对显示对象实现像素级的准确识别和处理。

【技术实现步骤摘要】

本专利技术涉及第三代功能脚本(AS3, ActionScript)中的对象检测技术,特 别是涉及一种基于像素的顶层对象检测方法和装置、以及基于像素的鼠标事件 检测方法和装置。
技术介绍
ActionScript是针对Adobe Flash Player运行时环境的编程语言,它在Flash 内容和应用程序中实现了交互性、数据处理以及其它许多功能。ActionScript是 由Flash Player中的ActionScript虛拟机(AVM)来执行的。随着ActionScript的不断发展,出现了第三代Flash脚本ActionScript 3.0, 简称AS3, AS3的脚本编写功能超越了 ActionScript的早期版本,旨在方便创 建拥有大型数据集和面向对象的可重用代码库的高度复杂应用程序。目前在AS3中,目标对象是以矢量为基础的,位图在Flash中均被看作矩 形来对待。也就是说,如果AS3用户欲釆用位图作为显示对象(displayobject), 那么,所有的位图都会被当作矩形来看,位图的透明区域也被认为是不透明的 矩形,从而导致顶层对象不能准确地被识别。例如假设当前的显示对象是在 某实物前面放置一个铁环,那么,当点击铁环中心时,由于铁环中间部分是空 的,即属于透明区域,实际顶层对象是铁环后面的实物,应该点击到实物,而 现有技术将位图的透明区域也看作不透明的矩形,那么,点击铁环中心时不会 认为点击到的顶层对象是实物,而会错误的识别顶层对象为铁环平面。同样,在AS3中,鼠标事件(MouseEvent)和鼠标位置是最重要的人机交 互途径,其中,鼠标位置是指AS3鼠标坐标的总结。 一般,当鼠标移动到目标 对象之上时会触发鼠标事件;或鼠标在目标对象之上移动、按下、松开、转动滚轮时会触发鼠标事件。而现有鼠标事件系统中,所有的位图显示对象会被当 作与位图大小相同的不透明的矩形区域处理,显示对象中透明镂空部分不会被 穿透,这样就会导致对显示对象识别错误,从而产生错误的鼠标事件。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供一种基于像素的顶层对象检测方法 和装置,能准确获取和识别基于像素的任意点目标显示对象。本专利技术进一步的目的在于提供一种基于像素的鼠标事件检测方法和装置, 能对显示对象实现像素级的准确识别和处理。为达到上述目的,本专利技术的技术方案是这样实现的 本专利技术提供了一种基于像素的顶层对象检测方法,包括 获取所有目标显示对象像素点的数组,并设置基本变量; 遍历数组中的每个显示对象像素点,确定显示对象当前像素点是否为透明。 其中,所述基本变量包括偏移矩阵、像素绘制区域、位图缓存大小以及绘制区域的起始点;所述设置基本变量为将所述基本变量设置为成员变量。 上述方案中,所述确定显示对象当前像素点是否为透明具体为在当前像素点显示对象为位图对象时,调用bitmapData.hitTest函数进行透明判决;在当前点像素显示对象为其他对象时,提取需判断的像素点进行绘制、比较,确定是否透明。上述方案中,所述绘制、比较过程具体为提取像素点,并创建一个像素 大小的位图数据缓冲区,根据偏移矩阵和绘制区域将目标对象中需要检测的点 的像素值,绘制到创建好的一个像素大小的位图数据缓冲区中;检测缓冲区中 该像素的ot值,确定当前像素点是否透明,如果oc值为零,则像素点透明;如果 a值不为零,则像素点不透明。本专利技术还提供了一种基于像素的顶层对象检测装置,包括初始化单元、像 素点透明状态确定单元;其中,初始化单元,用于获取所有目标显示对象像素点的数组,并设置基本变量;像素点透明状态确定单元,用于遍历数组中的每个显示对象像素点,确定 显示对象当前像素点是否为透明。上述方案中,所述像素点透明状态确定单元还包括对象类型判别单元和 处理单元;其中,所述对象类型判别单元,用于确定当前像素点显示对象为位 图对象、或文本区域对象、或其他对象,并将确定的对象类型送至处理单元; 所述处理单元,用于接收对象类型判别单元发来的当前像素点显示对象的类型, 在当前像素点显示对象为位图对象时,调用bitmapData.hitTest函数进行透明判 决;在当前点像素显示对象为其他对象时,提取需判断的像素点进行绘制、比 较,确定是否透明。上述方案中,所述处理单元进一步包括像素点提取单元、绘制位置计算 单元、位图数据创建单元、像素点绘制单元以及像素点判别单元;其中,像素 点提取单元,用于提取当前显示对象的像素点;绘制位置计算单元,用于根据 偏移矩阵确定绘制位图的位置;位图数据创建单元,用于创建一个像素大小的 位图数据;像素点绘制单元,用于将像素点绘制到该位图的缓存中;像素点判 别单元,用于根据缓存的a值确定当前像素点是否透明。本专利技术又提供了一种基于像素的鼠标事件检测方法,包括监听stage的鼠标事件;侦听到鼠标事件后,获取鼠标点击点对应的显示对象; 由获取的显示对象产生对应的事件,并由事件处理函数处理所产生的鼠标 事件;其中,所述获取鼠标点击点对应的显示对象为获取确定透明或不透明属性 的像素点显示对象,所述确定透明或不透明属性包括获取所有目标显示对象 像素点的数组,并设置基本变量;遍历数组中的每个显示对象像素点,确定显 示对象当前像素点是否透明。本专利技术还提供了一种基于像素的鼠标事件检测装置,包括鼠标事件监听 单元、显示对象获取单元、事件产生及处理单元;其中,所述鼠标事件监听单元,用于监听stage的鼠标事件;所述显示对象获取单元,用于在侦听到鼠标事件后,获取鼠标点击点对应的显示对象;所述事件产生及处理单元,由显示对象产生对应的事件,并由事件处理函 数处理所产生的鼠标事件;其中,所述显示对象获取单元还包括初始化单元、像素点透明状态确定 单元;所述初始化单元,用于获取所有目标显示对象像素点的数组,并设置基 本变量;所述像素点透明状态确定单元,用于遍历数组中的每个显示对象像素 点,确定显示对象当前像素点是否为透明。本专利技术所提供的基于像素的顶层对象检测及鼠标事件检测方法和装置,将 目标显示对象按像素点处理,分别确认每个像素点目标对象是否透明,如此, 就可以高效地获得任意一点基于像素的目标显示对象,从而过滤掉位图中的透 明区域,使位图中的透明区域不会再被作为不透明的矩形来处理,进而准确地 识别顶层对象。进一步的,基于像素级检测,在鼠标事件系统中,所有的显示对象都会被 当作像素级显示对象来处理,如此,能够准确地提取出目标点的最顶层不透明对象,准确完成2D图形引擎中基本的目标拾取功能,从而为Flash成为基于位 图的2D图形引擎的目标选择提供了基础。附图说明图1为本专利技术基于像素的顶层对象检测方法的实现流程示意图; 图2为本专利技术基于像素的鼠标事件检测方法的实现流程示意图。具体实施例方式本专利技术的基本思想是将目标显示对象按像素点处理,分别确认每个像素 点显示对象是否透明,从而过滤掉位图中的透明区域,准确识别顶层对象。 本专利技术基于像素的顶层对象检测方法如图l所示,包括以下步骤 步骤101:以像素点为单位,获取所有目标显示对象像素点的数组,并设8置基本变量;这里,所述获取所有目标显示对象像素点的数组是指获取目标显示对象的每个像素点,分别作为一个数组元素依次放置在数组中,具体如何获取像素点本文档来自技高网
...

【技术保护点】
一种基于像素的顶层对象检测方法,其特征在于,该方法包括: 获取所有目标显示对象像素点的数组,并设置基本变量; 遍历数组中的每个显示对象像素点,确定显示对象当前像素点是否为透明。

【技术特征摘要】

【专利技术属性】
技术研发人员:黄朝兴
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1