一种基于事件机制的3D系统界面局部刷新方法及系统技术方案

技术编号:39281934 阅读:9 留言:0更新日期:2023-11-07 10:55
本发明专利技术公开了一种基于事件机制的3D系统界面局部刷新方法及系统,本方法首先将系统界面中的每个组件作为一个事件源,为每个事件源设置一个事件监听器;其次为每个组件建立与关联区域的映射关系;当操作触发到某事件源监听器时生成事件对象,将产生的事件对象作为参数传入事件监听器,根据事件对象进行判断,找到关联的更新区域,将待刷新区域加入刷新任务队列中,按顺序执行对应的刷新操作。本发明专利技术避免过多进行无意义的界面刷新,极大的降低了GPU占用率,避免了系统卡顿,而且极大的提高了界面刷新效率。面刷新效率。面刷新效率。

【技术实现步骤摘要】
一种基于事件机制的3D系统界面局部刷新方法及系统


[0001]本专利技术涉及3D系统界面设计领域,尤其涉及一种基于事件机制的3D系统界面局部刷新方法及系统。

技术介绍

[0002]随着应用程序的不断发展,系统界面的刷新方式呈现出多样化的形式。由于系统界面可能是根据事件触发或人为展示数据的变化而变化。一个界面可以看作由多个组件构成的多个区域画面组成,在浏览系统界面时,往往因为局部信息的查询或更新而导致整个界面需要从服务器重新加载一次,进行整个界面的刷新。3D系统界面是基于游戏引擎开发而成的,界面的渲染依赖于每一帧的画面联动,帧率决定了画面的流畅度。这种方式使得界面刷新频繁时,界面的数据源频繁发生改变,导致用户肉眼可见的系统画面卡顿,系统性能降低,严重影响系统界面的流畅度。

技术实现思路

[0003]针对上述问题,本专利技术的目的是:当界面刷新频繁时,能够通过局部刷新的方法避免全局刷新的工作量、数据丢失与资源浪费,提高界面的刷新效率,避免出现界面卡顿、加载过慢的情况。
[0004]为了实现上述目的,本专利技术所采用的技术方案为:一种基于事件机制的3D系统界面局部刷新方法,该方法首先将系统画面中的每个组件作为一个事件源,并为每个组件映射一或多个关联区域,为每个事件源设置一个事件监听器,当用户操作触发到某事件源监听器时生成事件对象,将产生的事件对象作为参数传入事件监听器,根据事件对象进行判断,筛选出符合条件的关联区域,对关联区域执行对应的刷新操作。该方法可行性强,具体包含以下步骤:
[0005]S1:设计包含多个组件的界面,并为每个组件绑定监听事件和关联区域;
[0006]S2:初始化设置和绘制渲染完整的系统界面;
[0007]S3:采用刷新任务队列管理,当监听到系统界面中任一组件发生触发事件时,将关联的待刷新区域的添加到刷新任务队列中;
[0008]S4:对关联的待刷新区域界面进行刷新。
[0009]进一步的,所述S1具体为:
[0010]S1.1:为每个组件绑定监听事件;
[0011]S1.2:将系统界面划分为多个区域,为每个区域设置一个区域名称;
[0012]S1.3:根据组件触发事件与各个区域属性值之间的关联性,为组件与关联区域建立映射关系;
[0013]S1.4:为组件与关联区域的关联属性值设置初始值。
[0014]进一步的,所述S2具体为:
[0015]采用图形应用程序接口度所述界面进行初始化设置和渲染。
[0016]进一步的,所述S3具体为:
[0017]S3.1:用户操作系统界面,执行某操作,系统监听到触发事件后,将事件源绑定到事件监听器中;
[0018]S3.2:根据触发组件提供的回调函数,将事件传播到该组件所在的活动中,改变相关属性值;
[0019]S3.3:根据事件源映射到所有的关联区域,遍历所有的关联区域,观察关联区域的关联属性值是否发生变化;
[0020]S3.4:将关联属性值发生变化的关联区域添加到刷新任务队列中。
[0021]进一步的,所述S4具体为:
[0022]S4.1:以先进先出的原则获取刷新任务队列中每个区域的更新顺序;
[0023]S4.2:依次将每个区域清空后重新渲染加载;
[0024]S4.3:采用返回值方式标识已更新过的区域;
[0025]为了实现上述目的,本专利技术还采用了一种基于事件机制的3D系统界面局部刷新系统,包括初始化模块、监听模块和刷新模块;
[0026]所述的初始化模块,用于为每个组件绑定监听事件,为每个组件找到系统划分区域中的关联区域,并建立组件与关联区域的映射关系,初始化关联属性值。
[0027]所述的监听模块,用于对系统界面监听过程中,针对每个组件绑定的监听事件,采用刷新任务队列管理;
[0028]所述的刷新模块,用于当监听到系统界面任一组件的触发事件时,遍历该组件的关联区域,当关联区域的关联属性值发生变化时,将该关联区域作为待刷新区域加入到刷新任务队列中,然后以先见先出的原则对刷新任务队列中的待刷新区域依次刷新。
[0029]进一步的,所述的一种基于事件机制的3D系统界面局部刷新系统,其特征在于:所述初始化模块具体为:
[0030]界面设计单元,用于配置、管理多个组件,设计系统界面;
[0031]事件绑定单元,用于为系统界面的每个组件绑定监听/触发事件;
[0032]区域划分单元,用于将系统界面划分为多个区域;
[0033]关联绑定单元,用于为每个组件找到系统界面中的关联区域,根据组件触发事件与各个区域属性值之间的关联性,建立组件与关联区域的映射关系,为组件与关联区域的关联属性值设置初始值;
[0034]绘制及渲染单元,用于采用图形应用程序接口对所述系统界面进行全屏界面的初始化绘制和渲染。
[0035]进一步的,所述监听模块具体为:监听到组件的触发事件时,遍历该组件的关联区域,将关联属性值发生变化的关联区域作为待刷新区域添加到刷新任务队列中。
[0036]进一步的,所述刷新模块具体为:
[0037]队列管理单元,用于当监听到任一组件发生触发事件时,遍历该组件所有的关联区域,将关联属性值发生变化的关联区域作为待刷新区域添加到刷新任务队列中;
[0038]更新单元,用于获取刷新任务队列中的每个区域的更新顺序,以先进先出原则依次将每个区域清空后重新绘制渲染。
[0039]与现有技术相比,本专利技术的有益效果在于,
[0040]1、本专利技术构建组件与区域一对多的映射关系,减少了区域遍历的复杂度,进一步缩减了局部刷新区域的范围。
[0041]2、本专利技术采用返回值标记法,对已更新的区域作标识,避免重复刷新和刷新遗漏等一系列不必要的操作,简化了刷新流程。
[0042]3、本专利技术能够对整个界面进行区域划分,且仅在事件源触发的时候对关联区域重新渲染,极大的降低了GPU占用率,提高了刷新的渲染效率。同时,该方法应用性广,可行性高,避免了全局刷新的数据丢失和资源浪费。
附图说明
[0043]图1是本专利技术的一种基于事件机制的3D系统界面局部刷新方法流程图。
[0044]图2是本专利技术的一种基于事件机制的3D系统界面局部刷新方法结构框图。
[0045]图3是本专利技术的事件机制触发流程图。
具体实施方式
[0046]下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。
[0047]如图1所示,本专利技术的界面局部刷新方法包括:
[0048]S101:设计包含多个组件的界面,并为每个组件绑定监听事件和关联区域。
[0049](1)为每个组件绑定监听事件;
[0050](2)将系统界面划分为多个区域,为每个区域设置一个区域名称;
[0051](3)根据组件触发事件与各个区域属性值之间的关联性,为组件与关联区域建立映射关系;
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于事件机制的3D系统界面局部刷新方法,其特征在于:包括以下步骤:S1:设计包含多个组件的界面,并为每个组件绑定监听事件和关联区域;S2:初始化设置和绘制渲染完整的系统界面;S3:采用刷新任务队列管理,当监听到系统界面中任一组件发生触发事件时,将关联的待刷新区域添加到刷新任务队列中;S4:对关联的待刷新区域界面进行刷新。2.根据权利要求1所述的一种基于事件机制的3D系统界面局部刷新方法,其特征在于:所述S1具体为:S1.1:为每个组件绑定监听事件;S1.2:将系统界面划分为多个区域,为每个区域设置一个区域名称;S1.3:根据组件触发事件与各个区域属性值之间的关联性,为组件与关联区域建立映射关系;S1.4:为组件与关联区域的关联属性值设置初始值。3.根据权利要求1所述的一种基于事件机制的3D系统界面局部刷新方法,其特征在于:所述S2中采用图形应用程序接口对所述系统界面进行初始化设置和绘制渲染。4.根据权利要求1所述的一种基于事件机制的3D系统界面局部刷新方法,其特征在于:所述S3具体为:根据事件源遍历所有的关联区域,当关联区域的关联属性值发生变化时,将该关联区域作为待刷新区域添加到刷新任务队列中,包括以下步骤:S3.1:用户操作系统界面,执行某操作,系统监听到触发事件后,将事件源绑定到事件监听器中;S3.2:根据触发组件提供的回调函数,将事件传播到该组件所在的活动中,改变相关属性值;S3.3:根据事件源映射到所有的关联区域,遍历所有的关联区域,观察关联区域的关联属性值是否发生变化;S3.4:将关联属性值发生变化的关联区域添加到刷新任务队列中。5.根据权利要求1所述的一种基于事件机制的3D系统界面局部刷新方法,其特征在于:所述S4具体为:S4.1:以先进先出的原则获取刷新任务队列中每个区域的更新顺序;S4.2:依次将每个区域清空后重新渲染加载;S4.3:采用返回值方式标识已更新过的区域。6.一种基于事件机制的3D系统界面局部刷新系统,适用于所述权利要求1<...

【专利技术属性】
技术研发人员:刘琴王强李佑文褚红健葛淼俞铭
申请(专利权)人:南京国电南自轨道交通工程有限公司
类型:发明
国别省市:

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

1