Ui数据处理系统
技术领域
本发明涉及计算机
技术领域
,尤其涉及一种UI数据处理系统。背景技术
原生实时交互处理程序相较于传统实时交互处理程序的主要区别在于,传统实时交互处理程序在云端为每一个用户建立一个进程,这个进程只接收该用户的输入信号,然后把这个进程内的渲染画面输出给用户的本地客户端,而原生实时交互处理程序则是只在云端上建立一个进程,每一个用户加入只需要在进程内创建一个对应的用户信息,这个进程内可接收多个用户的输入信号,进行相关处理即可,这样可以很大程度上的节约开销。
传统实时交互处理程序的一个进程内的画面由专门渲染UI(User Interface,用户界面)的相机画面和渲染用户视野(包含后处理等)的相机画面混合而成,一个进程中只存在一个UI相机和一个用户相机,所以UI的交互只需直接读取本地的输入。传统实时交互处理程序中其实是由多个进程(每个用户一个进程)构成,也就相当于(一个进程、一套UI、一个用户)*n,n表示用户数,每个进程中的UI只读取对应进程内的输入。而在原生实时交互处理程序中是由一个进程、多个用户、多套UI构成,这样一个进程内就存在多个用户的输入信号和多套UI,所以无法使用传统的UI框架。目前还没有一个适用于原生实时交互处理程序的UI(User Interface,用户界面)交互解决方案。
发明内容
本发明目的在于,提供一种UI数据处理系统,使得原生实时交互处理程序能够快速准确地实现UI交互。
根据本发明一方面,提供了一种UI数据处理系统,包括原生实时交互处理程序进程、处理器和存储有计算机程序的存储器,所述进程包括多个用户信息数据结构,每一用户信息数据结构在所述进程中独立存储,所述用户信息数据结构包括用户id数据段、当前用户输入数据段、UI容器id数据段、渲染相机id数据段和当前输入设备状态数据段,当所述处理器在执行所述计算机程序时,实现以下步骤:
步骤S1、接收客户端发送的输入数据,基于所述输入数据确定当前输入事件,并更新所述当前用户输入数据段,所述输入数据包括目标用户id、输入设备状态信息、操作执行信息和操作位置信息;
步骤S2、基于所述目标用户id检索所述进程确定目标UI容器和目标渲染相机;
步骤S3、根据所述操作位置信息遍历所述目标UI容器确定目标UI;
步骤S4、基于所述当前输入事件、目标UI以及当前输入设备状态数据执行对应的UI事件,生成目标UI显示数据,并更新所述当前输入设备状态数据段和当前UI事件数据段;
步骤S5、基于所述目标UI显示数据在所述目标渲染相机上生成目标渲染数据,将所述目标渲染数据发送给对应的客户端。
本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明提供的一种UI数据处理系统可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有下列优点:
本发明基于在一个原生实时交互处理程序进程中设置的每一用户信息数据结构,形成适用于原生实时交互处理程序的UI框架,使得原生实时交互处理程序能够快速准确地实现每一用户的UI交互,提升了用户体验。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
图1为本发明实施例提供的UI数据处理系统示意图。
具体实施方式
为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种UI数据处理系统的具体实施方式及其功效,详细说明如后。
本发明实施例提供了一种UI数据处理系统,如图1所示,包括原生实时交互处理程序进程、处理器和存储有计算机程序的存储器,所述进程包括多个用户信息数据结构,每一用户信息数据结构在所述进程中独立存储,所述用户信息数据结构包括用户id数据段、当前用户输入数据段、UI容器id数据段、渲染相机id数据段和当前输入设备状态数据段,当所述处理器在执行所述计算机程序时,实现以下步骤:
步骤S1、接收客户端发送的输入数据,基于所述输入数据确定当前输入事件,并更新所述当前用户输入数据段,所述输入数据包括目标用户id、输入设备状态信息、操作执行信息和操作位置信息;
其中,所述输入设备具体可以为鼠标、键盘、操作手柄等等。作为一种实施例,所述输入设备状态信息包括默认状态、按下状态、抬起状态;所述操作执行信息包括操作指令信息和操作值信息,所述操作指令信息包括移动、滚轮滚动和指定按键,所述操作值信息包括滚轮滚动值;所述当前用户输入数据段包括当前输入设备滚轮值、当前输入设备操作位置信息、输入设备当前按下且未抬起的按键链表。
步骤S2、基于所述目标用户id检索所述进程确定目标UI容器和目标渲染相机;
步骤S3、根据所述操作位置信息遍历所述目标UI容器确定目标UI;
步骤S4、基于所述当前输入事件、目标UI以及当前输入设备状态数据执行对应的UI事件,生成目标UI显示数据,并更新所述当前输入设备状态数据段和当前UI事件数据段;
步骤S5、基于所述目标UI显示数据在所述目标渲染相机上生成目标渲染数据,将所述目标渲染数据发送给对应的客户端。
本地客户端可基于所述目标渲染数据显示UI数据的变化,其中,就渲染相机生成目标渲染数据过程基于现有渲染技术实现,在此不再赘述。
本发明实施例基于在一个原生实时交互处理程序进程中设置的每一用户信息数据结构,形成适用于原生实时交互处理程序的UI框架,使得原生实时交互处理程序能够快速准确地实现每一用户的UI交互,提升了用户体验。
作为一种实施例,所述步骤S1中,基于所述输入数据确定当前输入事件,并更新所述当前用户输入数据段,
步骤S11、基于客户端当前发送的所述设备状态信息和所述操作指令信息确定当前输入事件,所述输入事件包括输入设备滚轮滚动事件、输入设备移动事件、输入设备按下按键事件、输入设备抬起按键事件;
步骤S12、基于客户端当前发送的输入设备的按下状态、抬起状态更新所述输入设备当前按下且未抬起的按键链表,基于客户端当前发送的所述操作值信息更新所述当前输入设备滚轮值、基于客户端当前发送的操作位置信息更新所述当前输入设备操作位置信息。
其中,按键链表更新包括增加按键、删除按键等,具体更新过程基于现有技术手段即可实现,在此不再赘述。
本发明实施例在同一进程中维护不同用户的信息,基于用户输入能够快速准确确定用户对应的信息,并更新输入用户输入数据段,确定输入事件,提高后续执行对应的UI事件的效率。
作为一种实施例,步骤S3包括:
步骤S31、获取目标UI容器中的UI列表{UI1,UI2,…UIN},其中,UIn=(An,Bn),UIn为目标UI容器中的第n个UI,n的取值范围为1到N,An为UIn的位置信息,Bn为UIn的状态信息,初始化n=1;
步骤S32、判断Bn是否为激活状态,若不是激活状态,则执行步骤S33,若处于激活状态,则判断所述操作位置信息是否包含在An范围内,若是,则将UIn存入预设的检测结果数组中,执行步骤S33;
步骤S33、判断n是否小于N,若是,则设置n=n+1,返回执行步骤S32,否则,执行步骤S34;
步骤S34、判断当前检测结果数组长度是否为0,若是,则返回“null”, “null”表示目标UI为空,否则,将当前检测结果数组中的每一UIn的深度值进行排序,将最上层的UIn确定为目标UI。
通过步骤S3能够快速准确地确定目标UI。
确定输入事件后,如何确定具体对哪一UI执行哪一UI事件尤为重要,这便需要设置对应的输入设备状态数据结构,以及具体UI交互逻辑,作为一种实施例,所述输入设备包括至少一个按键、滚轮,所述输入设备、以及每一按键和滚轮均对应一个当前输入设备状态数据,所述当前输入设备状态数据包括当前激活事件的输入设备按键、是否能够开启点击事件、是否处于拖动状态、选中并拖动的UI信息、选中并按下的UI信息、进入的UI信息、按下的位置信息、输入设备位置信息、输入设备每帧之间的位置偏移信息、输入设备每帧之间的滚轮差值信息等。所述UI事件包括进入UI事件、退出UI事件、按下UI事件、抬起UI事件、开始拖动UI事件、拖动UI事件、结束拖动UI事件、放下UI事件、UI滚动事件等。作为一种示例,UI容器中的每一UI均定义每一UI事件的接口,声明对应的UI事件,当需要对UI执行UI事件时,直接调用对应UI接口对应的UI事件执行即可。
基于不同的输入事件,需要执行不同的处理逻辑:
作为一种实施例,若所述当前输入事件为输入设备滚轮滚动事件,则所述步骤S4包括:
步骤S41、将输入设备滚轮对应的当前输入设备状态数据确定为目标输入设备状态数据,基于目标输入设备状态数据的输入设备滚轮滚动值和客户端发送的输入设备滚轮滚动值确定滚轮差值,更新所有当前输入设备状态数据的滚轮差值;
步骤S42、如果所述滚轮差值不为0且所述目标UI不为空,则基于所述滚轮差值执行所述目标UI事件。
作为一种实施例,如果所述当前输入事件为输入设备移动事件,则所述步骤S4包括:
步骤S401、将输入设备对应的当前输入设备状态数据确定为目标输入设备状态数据;
步骤S402、遍历所述目标输入设备状态数据,如果当前进入的UI,与所述目标UI不同,则执行:若当前进入的UI不为空,则对当前进入的UI执行退出UI事件;若目标UI不为空,则对所述目标UI执行进入UI事件;
步骤S403、将所述目标输入设备状态数据中的进入UI信息更新为所述目标UI,根据当前相邻帧之间的输入设备位置确定并更新输入设备每帧之间的位置偏移信息,将输入设备位置信息更新为所述操作位置信息;
步骤S404、遍历所述目标输入设备状态数据,若选中并按下的UI信息是不为空,且不是处于拖动状态,且输入设备每帧之间的位置偏移不为0,则对所述选中并按下的UI执行开始拖动UI事件,并将所述目标输入设备状态数据中的选中并拖动的UI信息更新等于选中并按下的UI信息,并改为处于拖动状态信息,否则,若当前输入设备状态数据中的已经处于拖动状态,则对当前选中并按下的UI执行拖动UI事件。
作为一种实施例,如果所述当前输入事件为输入设备按下按键事件,则所述步骤S4包括:
步骤S411、基于所述客户端发送的输入数据确定当前输入设备按键,将所述当前输入设备按键对应的当前输入设备状态数据确定为目标输入设备状态数据;
步骤S412、若目标UI不为空,则对所述目标UI执行按下UI事件;
步骤S413、将所述目标输入设备状态数据中的是否能够开启点击事件更新为能够开启点击事件,将选中并按下的UI信息更新为所述目标UI,将输入设备位置信息更新为所述操作位置信息。
作为一种实施例,如果所述当前输入事件为输入设备抬起按键事件,则所述步骤S4包括:
步骤S421、基于所述客户端发送的输入数据确定当前抬起的输入设备按键,将所述当前抬起的输入设备按键对应的当前输入设备状态数据确定为目标输入设备状态数据;
步骤S422、遍历所述目标输入设备状态数据:若满足是否处于拖动状态为处于拖动状态,且目标UI不为空,则对所述目标UI执行抬起UI事件;
步骤S423、遍历所述目标输入设备状态数据:若满足是否能够开启点击事件为能够开启点击事件,且选中并拖动的UI信息与目标UI相同且都不为空,则对所述目标UI执行点击UI事件;
步骤S423、遍历所述目标输入设备状态数据:若所述目标UI不为空,对所述目标UI执行抬起UI事件;
步骤S424、遍历所述目标输入设备状态数据:若满足是否处于拖动状态数据为处于拖动状态,对所述目标UI执行结束拖动UI事件;
步骤S425、将所述目标输入设备状态数据中的是否能够开启点击事件数据更新为不能够开启点击事件,将选中并按下的UI信息更新为空,将输入设备位置信息更新为初始位置信息;
步骤S426、遍历所述目标输入设备状态数据:若满足是否处于拖动状态数据为处于拖动状态,则更新为不处于拖动状态,并将选中并拖动的UI信息更新为空。
基于不同的事件设置不同的UI交互逻辑,使得原生实时交互处理程序能够快速准确地实现每一用户的UI交互,提升了用户体验。
需要说明的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:窗口管理方法、装置、设备和存储介质