一种调试移动设备应用程序界面性能的方法及装置
技术领域
本发明涉及软件调试领域,尤其涉及一种调试移动设备应用程序界面性能的方法及装置。
背景技术
目前在移动设备(例如智能手机和平板电脑)上的游戏广受大众欢迎。由于玩家可以方便地随时在移动设备上游玩,因此移动设备上的游戏倾向已经越来越明显。由于Unity引擎的稳定和成熟,其被绝大部分移动设备游戏开发人员所选用。无论是移动设备上那一种类型游戏,在其开发过程中游戏用户界面(User Interface,简称UI)都是很重要的开发环节。一般地,因为硬件设备的限制以及对驰航能力的考虑,移动设备的硬件性能相对于同级别的台式电脑或笔记本电脑要低;所以为了使得在移动设备上的游戏能够流畅地运行,开发人员需要相对于在主机上运行的游戏花费更多的精力进行优化。例如,一个在移动设备上运行且优化良好的游戏,其运行时UI开销应尽量控制在游戏整体开销的10%左右。然而,目前不少游戏的开销会显著高于这个比例。
当前Unity引擎提供两套图形用户界面工具库,用于编写应用程序内的图形用户界面,分别是UGUI和NGUI。因为上述两套工具库有各自优缺点,所以目前出现在市面上的游戏中,基于两者开发的项目比例大致相同。然而,不管游戏采用哪套图形用户界面工具库开发,应用程序运行时重建用户界面过程总是占据开销的绝大部分。
因此,为了尽可能减少对用户界面重建的次数,对用户界面上的界面元件进行静动分离是优化用户界面的有效方法。分离后,静止的界面元件被归为一组,变化频率类似的界面元件各自分为一组,从而可以针对性刷新界面元件,而无需对重建静止的界面元件,有效降低了界面元件的重建的压力。如何合理地确定上述界面元件的分组成为了目前开发过程中一个有实际意义的问题。
发明内容
本申请的目的是解决现有技术的不足,提供一种调试移动设备应用程序界面性能的方法及装置,能够获得自动统计记录界面元件的变化频率,从而实现对界面元件分组的效果。
为了实现上述目的,本申请采用以下的技术方案。
首先,本申请提出了一种调试移动设备应用程序界面性能的方法。该方法适用于Unity3D应用程序,并包括以下步骤:
S100)在移动设备上配置运行时监控应用程序内界面元件变化的界面监控插件,并将所述界面监控插件附加在待检测的应用程序上;
S200)运行待检测的应用程序,并启动所述界面监控插件以监控所述应用程序当前活动界面内的所有界面元件;
S300)检测在指定时间段内出现变化的界面元件,以动态地确定当前活动界面内的静态界面元件和动态界面元件;
S400)在检测所得的动态界面元件中,查找被遮挡的动态界面元件,并关闭被遮挡的动态界面元件。
进一步地,在本申请的上述方法中,当应用程序是基于NGUI库编写界面时,所述界面监控插件通过UIWidget确定界面元件在指定时间段内是否出现变化。
再进一步地,在本申请的上述方法中,所述步骤S200还包括以下的子步骤:
S201)通过UIWidget捕捉当前活动界面内出现变化的界面元件,并获取所述界面元件的元件ID;
S202)基于所述元件ID,检索所述界面元件的名称、位置、尺寸、存在时间及出现时间点的信息;
S203)将界面元件的名称、位置、尺寸及当前时间点信息按预设的数据结构存储为监控实例;
S204)记录各个监控实例,并删除存在时间大于1秒的监控实施。
又进一步地,在本申请的上述方法中,所述步骤S200还包括以下的后置处理步骤:根据所记录的监控实例,高亮对应的界面元件以实现监控的可视化。
进一步地,在本申请的上述方法中,所述步骤S300还包括以下的子步骤:
S301)基于所记录的监控实例,判断各个界面元件为静态界面元件或动态界面元件;
S302)按照静态界面元件和动态界面元件的分类,划分界面元件到多个组,使得每个组内只包含静态界面元件或变化频率类似的动态界面元件。
其中,动态界面元件的变化频率由相应的存在时间及出现时间点确定。
再进一步地,在本申请的上述方法中,所述步骤S300还包括以下的后置处理步骤:保存界面元件的元件ID及分组信息,并导出为外部可读文件。
进一步地,在本申请的上述方法中,所述界面监控插件在待检测的应用程序上设置有位于应用程序界面的开关,使得可以在运行时打开或关闭界面监控插件。
其次,本申请还公开了一种调试移动设备应用程序界面性能的装置。该装置适用于Unity3D应用程序,并包括以下模块:配置模块,用于在移动设备上配置运行时监控应用程序内界面元件变化的界面监控插件,并将所述界面监控插件附加在待检测的应用程序上;启动模块,用于运行待检测的应用程序,并启动所述界面监控插件以监控所述应用程序当前活动界面内的所有界面元件;检测模块,用于检测在指定时间段内出现变化的界面元件,以动态地确定当前活动界面内的静态界面元件和动态界面元件;查找模块,用于在检测所得的动态界面元件中,查找被遮挡的动态界面元件,并关闭被遮挡的动态界面元件。
进一步地,在本申请的上述装置中,当应用程序是基于NGUI库编写界面时,所述界面监控插件通过UIWidget确定界面元件在指定时间段内是否出现变化。
再进一步地,在本申请的上述装置中,所述启动模块还包括以下的子模块:捕捉模块,用于通过UIWidget捕捉当前活动界面内出现变化的界面元件,并获取所述界面元件的元件ID;检索模块,用于基于所述元件ID,检索所述界面元件的名称、位置、尺寸、存在时间及出现时间点的信息;存储模块,用于将界面元件的名称、位置、尺寸及当前时间点信息按预设的数据结构存储为监控实例;记录模块,用于记录各个监控实例,并删除存在时间大于1秒的监控实施。
又进一步地,在本申请的上述装置中,所述启动模块还包括以下的后置处理模块:可视化模块,用于根据所记录的监控实例,高亮对应的界面元件以实现监控的可视化。
进一步地,在本申请的上述装置中,所述检测模块还包括以下的子模块:判断模块,用于基于所记录的监控实例,判断各个界面元件为静态界面元件或动态界面元件;分组模块,用于按照静态界面元件和动态界面元件的分类,划分界面元件到多个组,使得每个组内只包含静态界面元件或变化频率类似的动态界面元件。其中,动态界面元件的变化频率由相应的存在时间及出现时间点确定。
再进一步地,在本申请的上述装置中,所述检测模块还包括以下的后置处理模块:导出模块,用于保存界面元件的元件ID及分组信息,并导出为外部可读文件。
进一步地,在本申请的上述装置中,所述界面监控插件在待检测的应用程序上设置有位于应用程序界面的开关,使得可以在运行时打开或关闭界面监控插件。
最后,本申请还提出一种计算机可读存储介质,其上存储有计算机指令。上述指令被处理器执行时,执行如下步骤:
S100)在移动设备上配置运行时监控应用程序内界面元件变化的界面监控插件,并将所述界面监控插件附加在待检测的应用程序上;
S200)运行待检测的应用程序,并启动所述界面监控插件以监控所述应用程序当前活动界面内的所有界面元件;
S300)检测在指定时间段内出现变化的界面元件,以动态地确定当前活动界面内的静态界面元件和动态界面元件;
S400)在检测所得的动态界面元件中,查找被遮挡的动态界面元件,并关闭被遮挡的动态界面元件。
进一步地,在处理器执行上述指令时,当应用程序是基于NGUI库编写界面时,所述界面监控插件通过UIWidget确定界面元件在指定时间段内是否出现变化。
再进一步地,在处理器执行上述指令时,所述步骤S200还包括以下的子步骤:
S201)通过UIWidget捕捉当前活动界面内出现变化的界面元件,并获取所述界面元件的元件ID;
S202)基于所述元件ID,检索所述界面元件的名称、位置、尺寸、存在时间及出现时间点的信息;
S203)将界面元件的名称、位置、尺寸及当前时间点信息按预设的数据结构存储为监控实例;
S204)记录各个监控实例,并删除存在时间大于1秒的监控实施。
又进一步地,在处理器执行上述指令时,所述步骤S200还包括以下的后置处理步骤:根据所记录的监控实例,高亮对应的界面元件以实现监控的可视化。
进一步地,在处理器执行上述指令时,所述步骤S300还包括以下的子步骤:
S301)基于所记录的监控实例,判断各个界面元件为静态界面元件或动态界面元件;
S302)按照静态界面元件和动态界面元件的分类,划分界面元件到多个组,使得每个组内只包含静态界面元件或变化频率类似的动态界面元件。
其中,动态界面元件的变化频率由相应的存在时间及出现时间点确定。
再进一步地,在处理器执行上述指令时,所述步骤S300还包括以下的后置处理步骤:保存界面元件的元件ID及分组信息,并导出为外部可读文件。
进一步地,在处理器执行上述指令时,所述界面监控插件在待检测的应用程序上设置有位于应用程序界面的开关,使得可以在运行时打开或关闭界面监控插件。
本申请的有益效果为:通过实时监控应用程序的界面元件以将其分组为静态界面元件和动态界面元件,并关闭被遮挡的动态界面元件,减少了界面重建时间,优化了界面性能。
附图说明
图1所示为本申请所公开的调试移动设备应用程序界面性能方法的方法流程图;
图2所示为在本申请的一个实施例中,监控界面元件的子方法流程图;
图3所示为在本申请的另一个实施例中,划分界面元件的子方法流程图;
图4所示为依据图3所示方法,保存界面元件划分信息的示意图;
图5所示为本申请所公开的调试移动设备应用程序界面性能装置的模块结构图。
具体实施方式
以下将结合实施例和附图对本申请的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本申请的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,如无特殊说明,当某一特征被称为“固定”、“连接”在另一个特征,它可以直接固定、连接在另一个特征上,也可以间接地固定、连接在另一个特征上。此外,本申请中所使用的上、下、左、右等描述仅仅是相对于附图中本申请各组成部分的相互位置关系来说的。在本申请和所附权利要求书中所使用的单数形式的“一种”、“该”和“所述”也旨在包括多数形式,除非上下文清楚地表示其他含义。
此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本申请。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。
应当理解,尽管在本申请中可能采用术语第一、第二、第三等来描述各种元件,但这些元件不应限于这些术语。这些术语仅用来将同一类型的元件彼此区分开。例如,在不脱离本申请范围的情况下,第一元件也可以被称为第二元件,类似地,第二元件也可以被称为第一元件。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”。
参照图1所示的方法流程图,本申请公开了一种调试移动设备应用程序界面性能的方法。该方法适用于Unity3D应用程序,并包括如图所示的以下步骤:
S100)在移动设备上配置运行时监控应用程序内界面元件变化的界面监控插件,并将所述界面监控插件附加在待检测的应用程序上;
S200)运行待检测的应用程序,并启动所述界面监控插件以监控所述应用程序当前活动界面内的所有界面元件;
S300)检测在指定时间段内出现变化的界面元件,以动态地确定当前活动界面内的静态界面元件和动态界面元件;
S400)在检测所得的动态界面元件中,查找被遮挡的动态界面元件,并关闭被遮挡的动态界面元件。
具体地,游戏项目的开发人员可以根据具体的应用程序源代码,以插件的形式将界面监控插件附加到待检测的应用程序上,以监控变化的界面元件。可替代地,开发人员也可以对应用程序的源代码直接插入上述用于监控界面元件的代码。相关的插件或者测试本的应用程序构建出包并安装到测试的移动设备上(例如智能手机或者平板电脑)。测试人员直接在移动设备上运行应用程序,使得相应的界面成为活动界面以进行监控,并依据监控所得的记录进行分组。
进一步地,在本申请的上述一个或多个实施例中,当应用程序是基于NGUI库编写界面时,所述界面监控插件通过UIWidget确定界面元件在指定时间段内是否出现变化。由于UIWidget是界面元件的抽象基类,可以通过监控UIWidget捕捉界面元件(例如本文框、选择框、图片框或界面本身等)的位置、缩放、颜色和显示隐藏等任意信息的变化,从而确定当前哪个界面元件在重建。
具体地,参照图2所示的方法流程图,在本申请的上述一个或多个实施例中,所述步骤S200还包括以下的子步骤:
S201)通过UIWidget捕捉当前活动界面内出现变化的界面元件,并获取所述界面元件的元件ID;
S202)基于所述元件ID,检索所述界面元件的名称、位置、尺寸、存在时间及出现时间点的信息;
S203)将界面元件的名称、位置、尺寸及当前时间点信息按预设的数据结构存储为监控实例;
S204)记录各个监控实例,并删除存在时间大于1秒的监控实施。
游戏项目的开发任意可以创建继承自Unity MonoBehaviour类、用于监控界面元件的类。当检测到有界面元件的UIWidget变化时,上述用于监控界面元件的类可以接收到对应界面元件的元件ID、位置、尺寸、存在时间及出现时间点的信息。这些信息将按照预设数据结构存储为监控实例,并删除存在时间大于1秒的监控实例(此类监控实例一般为显示在图片框中的动态图,由于其并不需要重建相应的界面元件,因此被排除在外)。
进一步地,在本申请的上述一个或多个实施例中,所述步骤S200还包括以下的后置处理步骤:根据所记录的监控实例,高亮对应的界面元件以实现监控的可视化。具体的可视化方式可以是以界面的矩形包围盒作为几何位置数据,并使用半透明红色贴图的额外渲染多个方型图,使得每个变化的界面元件对应这样的一个方形图,以达到监控的可视化。参照上面的描述,具体的实现方式可以是创建继承自Unity MonoBehaviour类、用于监控界面元件的类UIDebugDraw,其可以包括用于记录需要高亮界面的接口HighlightWidget。该接口依据传入的界面元件的元件ID、位置和尺寸等参数,并将其存储在HighlightWidgetInfo的预设数据结构中。通过重载实现MonoBehaviour.OnGUI()接口,遍历所有HighlightWidgetInfo实例,并使用Unity接口GUI.DrawTexture(Rect,Texture,ScaleMode)额外绘制方形图。其中,Rect来自于HighlightWidgetInfo实例的位置尺寸信息,Texture为一张半透明红色贴图,ScaleMode使用StretchToFill模式,这样每个变化的UI元素都有一个对应的在显示的半透明红色方形。同时,OnGUI()接口记录每个HighlightWidgetInfo实例存在时间,且删除大于1s的实例。
参照图3所示的方法流程图,在本申请的一个或多个实施例中,所述步骤S300还包括以下的子步骤:
S301)基于所记录的监控实例,判断各个界面元件为静态界面元件或动态界面元件;
S302)按照静态界面元件和动态界面元件的分类,划分界面元件到多个组,使得每个组内只包含静态界面元件或变化频率类似的动态界面元件;
其中,动态界面元件的变化频率由相应的存在时间及出现时间点确定,并作为界面元件分类的重要的依据。例如,对于NGUI,UIPanel可被初始化为分组的单元,并统计在每个UIPanel内是否包括大量静态界面元件(例如静态界面元件占该分组界面元件数量的70%以上)。具体的优化方法可以例如通过调整各个界面元件所属的分组,在考虑到语义的前提下尽量使得每个UIPanel内只包含静态界面元件或者变化频率类似的动态界面元件。
进一步地,在本申请的上述一个或多个实施例中,所述步骤S300还包括以下的后置处理步骤:保存界面元件的元件ID及分组信息,并导出为外部可读文件。参照图4所示数据结构示意图,界面元件的元件ID及分组信息可以使用Map<UIPanel,List<UIWidget>>的数据结构存储所有监控到UIWidget。其中,UIWidget所属的UIPanel为Map的key,UIWidget列表为Map的value。上述数据结构导出为外部可读文件,并通过遍历上述Map,统计变化的UIWidget数量及UIPanel所有UIWidget数量,即可得到动态界面元件比例和静态界面元件比例。开发人员根据这些信息对游戏用户界面作相应的改进,例如另外再创建一个UIPanel存储静态界面元件,而使用原UIPanel存储动态界面元件。此外,本领域技术人员应理解到,附图中的显示元件的数量和形状仅作为示例性的参考,不作为对本发明的限制。
可替代地,在本申请的上述一个或多个实施例中,该界面监控插件在待检测的应用程序上设置有位于应用程序界面的开关,使得可以在运行时打开或关闭颜色编码贴图。将包含上述界面监控插件的应用程序安装到测试用的移动设备上。在运行游戏时,上述位于应用程序界面的开关可以方便地打开和关闭,以针对性地针对某一个批次的游戏用户界面进行调试。
参照图5所示的模块结构图,本申请还公开了一种调试移动设备应用程序界面性能的装置。该装置适用于Unity3D应用程序,并包括如图所示的以下模块:配置模块,用于在移动设备上配置运行时监控应用程序内界面元件变化的界面监控插件,并将所述界面监控插件附加在待检测的应用程序上;启动模块,用于运行待检测的应用程序,并启动所述界面监控插件以监控所述应用程序当前活动界面内的所有界面元件;检测模块,用于检测在指定时间段内出现变化的界面元件,以动态地确定当前活动界面内的静态界面元件和动态界面元件;查找模块,用于在检测所得的动态界面元件中,查找被遮挡的动态界面元件,并关闭被遮挡的动态界面元件。具体地,游戏项目的开发人员可以根据具体的应用程序源代码,以插件的形式将界面监控插件附加到待检测的应用程序上,以监控变化的界面元件。可替代地,开发人员也可以对应用程序的源代码直接插入上述用于监控界面元件的代码。相关的插件或者测试本的应用程序构建出包并安装到测试的移动设备上(例如智能手机或者平板电脑)。测试人员直接在移动设备上运行应用程序,使得相应的界面成为活动界面以进行监控,并依据监控所得的记录进行分组。
进一步地,在本申请的上述一个或多个实施例中,当应用程序是基于NGUI库编写界面时,所述界面监控插件通过UIWidget确定界面元件在指定时间段内是否出现变化。由于UIWidget是界面元件的抽象基类,可以通过监控UIWidget捕捉界面元件(例如本文框、选择框、图片框或界面本身等)的位置、缩放、颜色和显示隐藏等任意信息的变化,从而确定当前哪个界面元件在重建。
具体地,在本申请的上述一个或多个实施例中,所述启动模块还包括以下的子模块:捕捉模块,用于通过UIWidget捕捉当前活动界面内出现变化的界面元件,并获取所述界面元件的元件ID;检索模块,用于基于所述元件ID,检索所述界面元件的名称、位置、尺寸、存在时间及出现时间点的信息;存储模块,用于将界面元件的名称、位置、尺寸及当前时间点信息按预设的数据结构存储为监控实例;记录模块,用于记录各个监控实例,并删除存在时间大于1秒的监控实施。游戏项目的开发任意可以创建继承自Unity MonoBehaviour类、用于监控界面元件的类。当检测到有界面元件的UIWidget变化时,上述用于监控界面元件的类可以接收到对应界面元件的元件ID、位置、尺寸、存在时间及出现时间点的信息。这些信息将按照预设数据结构存储为监控实例,并删除存在时间大于1秒的监控实例(此类监控实例一般为显示在图片框中的动态图,由于其并不需要重建相应的界面元件,因此被排除在外)。
进一步地,在本申请的上述一个或多个实施例中,所述启动模块还包括以下的后置处理模块:可视化模块,用于根据所记录的监控实例,高亮对应的界面元件以实现监控的可视化。具体的可视化方式可以是以界面的矩形包围盒作为几何位置数据,并使用半透明红色贴图的额外渲染多个方型图,使得每个变化的界面元件对应这样的一个方形图,以达到监控的可视化。参照上面的描述,具体的实现方式可以是创建继承自UnityMonoBehaviour类、用于监控界面元件的类UIDebugDraw,其可以包括用于记录需要高亮界面的接口HighlightWidget。该接口依据传入的界面元件的元件ID、位置和尺寸等参数,并将其存储在HighlightWidgetInfo的预设数据结构中。通过重载实现MonoBehaviour.OnGUI()接口,遍历所有HighlightWidgetInfo实例,并使用Unity接口GUI.DrawTexture(Rect,Texture,ScaleMode)额外绘制方形图。其中,Rect来自于HighlightWidgetInfo实例的位置尺寸信息,Texture为一张半透明红色贴图,ScaleMode使用StretchToFill模式,这样每个变化的UI元素都有一个对应的在显示的半透明红色方形。同时,OnGUI()接口记录每个HighlightWidgetInfo实例存在时间,且删除大于1s的实例。
在本申请的一个或多个实施例中,所述检测模块还包括以下的子模块:判断模块,用于基于所记录的监控实例,判断各个界面元件为静态界面元件或动态界面元件;分组模块,用于按照静态界面元件和动态界面元件的分类,划分界面元件到多个组,使得每个组内只包含静态界面元件或变化频率类似的动态界面元件。其中,动态界面元件的变化频率由相应的存在时间及出现时间点确定,并作为界面元件分类的重要的依据。例如,对于NGUI,UIPanel可被初始化为分组的单元,并统计在每个UIPanel内是否包括大量静态界面元件(例如静态界面元件占该分组界面元件数量的70%以上)。具体的优化方法可以例如通过调整各个界面元件所属的分组,在考虑到语义的前提下尽量使得每个UIPanel内只包含静态界面元件或者变化频率类似的动态界面元件。
进一步地,在本申请的上述一个或多个实施例中,所述检测模块还包括以下的后置处理模块:导出模块,用于保存界面元件的元件ID及分组信息,并导出为外部可读文件。参照图4所示数据结构示意图,界面元件的元件ID及分组信息可以使用Map<UIPanel,List<UIWidget>>的数据结构存储所有监控到UIWidget。其中,UIWidget所属的UIPanel为Map的key,UIWidget列表为Map的value。上述数据结构导出为外部可读文件,并通过遍历上述Map,统计变化的UIWidget数量及UIPanel所有UIWidget数量,即可得到动态界面元件比例和静态界面元件比例。开发人员根据这些信息对游戏用户界面作相应的改进,例如另外再创建一个UIPanel存储静态界面元件,而使用原UIPanel存储动态界面元件。此外,本领域技术人员应理解到,附图中的显示元件的数量和形状仅作为示例性的参考,不作为对本发明的限制。
可替代地,在本申请的上述一个或多个实施例中,该界面监控插件在待检测的应用程序上设置有位于应用程序界面的开关,使得可以在运行时打开或关闭颜色编码贴图。将包含上述界面监控插件的应用程序安装到测试用的移动设备上。在运行游戏时,上述位于应用程序界面的开关可以方便地打开和关闭,以针对性地针对某一个批次的游戏用户界面进行调试。
应当认识到,本申请的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。该方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
进一步地,该方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本申请的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文该步骤的指令或程序时,本文所述的申请包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本申请所述的方法和技术编程时,本申请还包括计算机本身。
计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本申请优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。
因此,应以说明性意义而不是限制性意义来理解本说明书和附图。然而,将明显的是:在不脱离如权利要求书中阐述的本申请的更宽广精神和范围的情况下,可以对本申请做出各种修改和改变。
其他变型在本申请的精神内。因此,尽管所公开的技术可容许各种修改和替代构造,但在附图中已示出并且在上文中详细描述所示的其某些实施例。然而,应当理解,并不意图将本申请局限于所公开的一种或多种具体形式;相反,其意图涵盖如所附权利要求书中所限定落在本申请的精神和范围内的所有修改、替代构造和等效物。