一种JSON文件的数据转换加载方法、装置及存储介质
技术领域
本发明涉及数据转换领域,尤其涉及一种JSON文件的数据转换加载方法、装置及存储介质。
背景技术
在游戏开发环节中,策划人员提供游戏的配置文件一般为JSON(JavaScriptObject Notation,一种轻量级的数据交换格式)文件,而在运行游戏程序的时候需要调用LUA(一种小巧的脚本语言)格式的文件,LUA文件不仅能够提高响应速度,还几乎能在所有操作系统和平台上编译、运行,进而实现游戏的可配置性和可扩展性。
一般的,程序人员会根据配置文件进行手动解析,进而在游戏程序中编写相应配置方法,这一方式需要耗费大量的时间精力,同时也增加了手动出错的风险;另一种方式则是在游戏程序运行时对所需要的配置文件进行解析和加载,即使是使用轻量小巧的数据格式或是脚本语言,还是会增加游戏程序运行所需的内存,尤其对于手游产品,游戏运行效率会明显降低,极大影响用户的游戏体验。
发明内容
为解决如何自动且高效地实现配置文件在游戏程序开发中的解析加载的技术问题,本发明公开了一种JSON文件的数据转换加载方法、装置及存储介质。具体技术方案如下所述:
第一方面,本发明公开了一种JSON文件的数据转换加载方法,所述方法包括:
获取至少一个配置文件,所述至少一个配置文件为JSON文件格式;
对所述至少一个配置文件进行批量化地解析处理,包括:
读取所述至少一个配置文件中的数据内容,并将所述数据内容以Table表的格式存储于新生成的与所述至少一个配置文件一一对应的至少一个文档文件中,所述至少一个文档文件中包含了数据表和索引表;
以及,根据所述至少一个配置文件的数据格式,自定义对所述至少一个文档文件中数据内容的获取方法,并存储于新生成的与所述至少一个配置文件一一对应的至少一个配置代理文件中;
获取游戏程序运行时所需加载的目标配置对象的标识数据;
根据所述目标配置对象的标识数据,调用目标配置代理文件中的获取方法,读取目标文档文件中对应的数据内容,将所述对应的数据内容直接加载在所述游戏程序中。
可以理解的,所述至少一个配置文件以配置对象为单位进行数据的记录存储,每一个配置对象中包含至少一组标识键值对和至少一组数据键值对,所述至少一组标识键值对作为所述配置对象的标识字段及其标识数据,所述至少一组数据键值对作为所述配置对象的配置字段及其配置数据。
进一步地,所述获取至少一个配置文件包括:
应用Unity3D中的自定义插件工具,导入资源库中以配置对象为单位存储数据并在每个配置对象中包含至少一组标识键值对和至少一组数据键值对的配置文件。
进一步地,所述读取所述至少一个配置文件中的数据内容,并将所述数据内容以Table表的格式存储于新生成的与所述至少一个配置文件一一对应的至少一个文档文件中包括:
针对每一配置文件,在对应的文档文件中创建数据表;
遍历所述每一个配置文件存储的配置对象的数据内容;
将所述每一个配置文件的数据内容中键名相同的键值依次存储于所述数据表中对应的数组中,所述数组的数组名与键名对应。
进一步地,所述读取所述至少一个配置文件中的数据内容,并将所述数据内容以Table表的格式存储于新生成的与所述至少一个配置文件一一对应的至少一个文档文件中还包括:
针对每一个配置文件,在对应的文档文案中创建索引表;
获取所述每一个配置文件中每一个配置对象的至少一组标识键值对的键值;
按照预设的定义方式,由所述至少一组标识键值对的键值定义所述每一个配置对象的索引标识;
对所述每一个配置对象的索引标识进行编号,作为所述每一个配置对象的数组索引下标数值;
将所述每一个配置文件中每一个配置对象的索引标识和数组索引下标数值存储与对应的文档文件的所述索引表中。
进一步地,所述根据所述至少一个配置文件的数据格式,自定义对所述至少一个文档文件中数据内容的获取方法包括:
获取配置对象的至少一组标识键值对的键值;
按照预设的定义方式,根据所述至少一组标识键值对的键值确定所述配置对象的索引标识;
根据所述索引标识,在存储有所述配置对象的数据内容的文档文件的索引表中,确定所述索引标识对应的数组索引下标数值;
根据所述数组索引下标数值,在存储有所述配置对象的数据内容的文档文件的数据表中,检索并输出所述文档文件的数据表中所有数组对应位置上的元素,作为所述配置对象的数据内容。
进一步地,所述方法还包括:
验证所述配置对象的索引标识的唯一性;
在出现多个相同的索引标识时,提示配置参数错误。
进一步地,所述获取游戏程序运行时所需加载的目标配置对象的标识数据包括:
响应游戏程序中目标配置对象的目标配置事件的触发,获取传入所述目标配置对象时间的配置参数,作为所述目标配置对象的第一标识数据;
获取所述目标配置对象所属的目标配置事件名称,作为所述目标配置对象的第二标识数据。
进一步地,所述根据所述目标配置对象的标识数据,调用目标配置代理文件中的获取方法,读取目标文档文件中对应的数据内容包括:
将所述目标配置对象的第一标识数据作为所述目标配置对象的至少一组标识键值对的键值;
根据所述目标配置对象的第二标识数据确定对应的目标文档文件和目标配置代理文件;
调用所述目标配置代理文件中的获取方法,并将所述至少一组标识键值对的键值传入所述获取方法中,读取所述目标文档文件中所述目标配置对象的数据内容;
在所述目标配置对象的标识数据不唯一或不存在时,提示时间参数错误,无法获得对应的数据内容。
第二方面,本发明公开了一种JSON文件的数据转换加载装置,所述装置包括:
第一获取模块,用于获取至少一个配置文件,所述至少一个配置文件为JSON文件格式;
解析模块,所述解析模块包括文件数据转换模块和文件数据获取模块,其中:
文件数据转换模块,用户读取所述至少一个配置文件中的数据内容,并将所述数据内容以Table表的格式存储于于新生成的与所述至少一个配置文件一一对应的至少一个文档文件中,所述至少一个文档文件中包含了数据表和索引表;
文件数据获取模块,用于根据所述至少一个配置文件的数据格式,自定义对所述至少一个文档文件中数据内容的获取方法,并存储于新生成的与所述至少一个配置文件一一对应的至少一个配置代理文件中;
第二获取模块,用于获取游戏程序运行时所需加载的目标配置对象的标识数据;
第三获取模块,用于根据所述目标配置对象的标识数据,调用目标配置代理文件中的获取方法,读取目标文档文件中对应的数据内容;
加载模块,用于将所述对应的数据内容直接加载在所述游戏程序中。
第三方面,本发明公开了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行如第一方面所述的一种JSON文件的数据转换加载方法。
第四方面,本发明公开了一种计算机存储介质,所述计算机存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由处理器加载并执行以实现如如第一方面所述的一种JSON文件的数据转换加载方法。
采用上述技术方案,本发明所述的一种JSON文件的数据转换加载方法、装置及存储介质具有如下有益效果:本发明公开的方法简化了手动解析JSON文件以及编写获取方法的流程,能够实现一键自动转换数据格式以减少在游戏运行过程中加载解析JSON文件的过程,缩减了游戏内存,提高了运行效率,还降低了手动出错的风险;同时,应用嵌入于UNity3D中的自定义工具,除了一键自动转换数据格式外也能同时进行多个文件的批量化处理;此外,在游戏内容需要更新升级时,只需修改配置文件的相应内容即可实现同步修改。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种JSON文件的数据转换加载方法的流程示意图;
图2(1)和(2)是本发明实施例提供的对配置文件进行批量化地解析处理过程中数据格式转换的流程示意图;
图3是本发明实施例提供的对配置文件进行批量化地解析处理过程中定义数据获取方法的流程示意图;
图4是本发明实施例提供的一种JSON文件的数据转换加载装置的结构示意图;
图5是本发明实施例提供的一种计算机设备的硬件结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
此处所称的“一个实施例”或“实施例”是指可包含于本发明至少一个实现方式中的特定特征、结构或特性。在本发明的描述中,需要理解的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
图1是本发明实施例提供的一种JSON文件的数据转换加载方法的流程示意图,本说明书提供了如实施例或流程示意图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图1所示,所述一种JSON文件的数据转换加载方法可以包括:
S110:获取至少一个配置文件,所述至少一个配置文件为JSON文件格式。
可以理解的是,所述至少一个配置文件以配置对象为单位进行数据的记录存储,每一个配置对象中包含至少一组标识键值对和至少一组数据键值对,所述至少一组标识键值对作为所述配置对象的标识字段及其标识数据,所述至少一组数据键值对作为所述配置对象的配置字段及其配置数据。
具体地,本发明实施例提供的步骤S110可以包括:
应用Unity 3D中的自定义的插件工具,导入资源库中以配置对象为单位存储数据并在每个配置对象中包含至少一组标识键值对和至少一组数据键值对的配置文件。
在一些可行的实施方式中,以游戏引导任务的配置文件为例,一配置文件为GuideStep.json,为游戏策划人员提供的关于游戏引导任务的引导步骤的JSON格式配置文件,其中名为GuideStep.json的配置文件中数据的记录和存储可以如下所示:
其中,{}内的内容作为一个配置对象,上述展示了两个配置对象的数据内容,其中“key_select_id”和“key_select_step”键名以“key”开头,则这两组键值对作为配置对象的标识键值对,其余键值对为配置对象的数据键值对。
S120:对所述至少一个配置文件进行批量化地解析处理。
可以理解的是,以上述游戏引导任务的配置文件为例,这类配置文件的数据内容以引导步骤为单位配置对象,且各个引导步骤的数据内容包含相同的键名,只是键值可能不同,因而能够对一个配置文件中的所有的配置对象进行数据的转换,也能够批量化地处理多个配置文件的数据内容。
具体地,本发明实施例提供的步骤S120可以包括以下步骤:
S210:读取所述至少一个配置文件中的数据内容,并将所述数据内容以Table表的格式存储于新生成的与所述至少一个配置文件一一对应的至少一个文档文件中,所述至少一个文档文件中包含了数据表和索引表。
具体地,如图2(1)和(2)所示,本发明实施例提供的步骤S210可以包括以下步骤:
S211:针对每一个配置文件,在对应的文档文件中创建数据表。
在一些可行的实施方式中,针对上述名为GuideStep.json的配置文件,首先创建同名的文档文件GuideStep.txt,以同名创建便于对目标数据内容的查找。在该文档文件中创建数据表t.value,用于存储名为GuideStep.json的配置文件中的所有数据内容。
S212:遍历所述每一个配置文件存储的配置对象的数据内容。
S213:将所述每一个配置文件的数据内容中键名相同的键值依次存储于所述数据表中对应的数组中,所述数组的数组名与键名对应。
在一些可行的实施方式中,针对上述名为GuideStep.json的配置文件和对应的名为GuideStep.txt的文档文件,在该文档文件的数据表t.value中包含数组名为select_id、select_step、name等多个数组,分别与配置文件中所包含的键值对的键名一一对应。该文档文件的数据表可以如下所示:
t.value={selcet_id={1,2,2,......},select_step={1,1,2,......},name={"序章长图","引导-主线任务","引导-主线任务",......},guide_type={1,2,1,2,......}......}
其中,selcet_id数组中第一位置的“1”来自配置文件第一个配置对象的以“key_select_id”为键名的键值,selcet_id数组中第二位置的“2”来自配置文件第二个配置对象的以“key_select_id”为键名的键值,如此类推,则可将上述配置文件的数据内容转换为一定Table表的格式。
具体地,本发明实施例提供的步骤S210还可以包括以下步骤:
S214:针对每一个配置文件,在对应的文档文件中创建索引表。
在一些可行的实施方式中,针对上述名为GuideStep.json的配置文件,在创建同名的文档文件GuideStep.txt中创建索引表t.index,该索引表中以一定形式存储配置文件中所有配置对象的标识数据,为查询目标数据内容提供索引。
S215:获取所述每一个配置文件中每一个配置对象的至少一组标识键值对的键值。
可以理解的是,通过遍历方式获取每一个配置文件中全部配置对象的标识键值对的键值。
S216:按照预设的定义方式,由所述至少一组标识键值对的键值定义所述每一个配置对象的索引标识。
在一些可行的实施方式中,以上述名为GuideStep.json的配置文件为例,第一个配置对象的的标识键值对的键值分别为"1"和"1",通过下划线进行拼接,得到该配置文件中第一个配置对象的索引标识为"1_1"。
优选地,在定义一个配置文件中所有配置对象的索引标识时,验证所有索引标识是否是唯一的,如若不唯一,则在获取数据内容时,一个索引标识或检索出两个配置对象的数据内容,造成程序漏洞。
S217:对所述每一个配置对象的索引标识进行编号,作为所述每一个配置对象的数组索引下标数值。
在一些可行的实施方式中,以上述名为GuideStep.json的配置文件为例,按照配置文件中配置对象存储的顺序进行其索引标识的编号。
S218:将所述每一个配置文件中每一个配置对象的索引标识和数组索引下标数值存储于对应的文档文件的所述索引表中。
在一些可行的实施方式中,以上述名为GuideStep.json的配置文件为例,在所述索引表中可以表示为:
t.index={["1_1"]=1,["2_1"]=2,......},其中"1_1"=1为该配置文件中第一个配置对象的索引标识及编号后得到的对应的数组索引下标数值,"2_1"=2为该配置文件中第二个配置对象的索引标识及编号后得到的对应的数组索引下标数值。
可选地,本发明实施例提供的步骤S216和步骤S217并不限定为上述的一种定义方式或编号顺序,此处不作赘述。
S220:根据所述至少一个配置文件的数据格式,自定义对所述至少一个文档文件中数据内容的获取方法,并存储于新生成的与所述至少一个配置文件一一对应的至少一个配置代理文件中。
可以理解的是,所述至少一个配置代理文件作为Unity3D中自定义插件的脚本文件,编号了对转换为一定Table表格式的数据内容的读取方法。在一些可行的实施方式中,还可以将本发明实施例提供的步骤S210所涉及的转换方法一并存储与所述至少一个配置代理文件中。
在一些可行的实施方式中,如图3所示,本发明实施例提供的步骤S220可以包括以下步骤:
S221:获取配置对象的至少一组标识键值对的键值。
可以理解的是,自定义的获取方法中需要传入一定的参数,而根据配置文件中数据内容的存储格式,每一个配置对象均具有至少一组标识键值对,所述至少一组标识键值对即是用来作为参数实现对数据内容的精准定位。
S222:按照预设的定义方式,根据所述至少一组标识键值对的键值确定所述配置对象的索引标识。
可以理解的是,所述预设的定义方式与本发明实施例提供的步骤S216所涉及的定义方式应保持一致。
S223:根据所述索引标识,在存储有所述配置对象的数据内容的文档文件的索引表中,确定所述索引标识对应的数组索引下标数值。
具体地,在根据所述索引标识确定对应的数组索引下表数值时还需对所述索引标识验证是否是唯一的或者是否存在,若不唯一,则会出现多个数组索引下标数值,若不存在则无法确定对应的数组索引下标数值,均需提示配置参数错误。
S224:根据所述数组索引下标数值,在存储有所述配置对象的数据内容的文档文件的数据表中,检索并输出所述文档文件的数据表中所有数组对应位置上的元素,作为所述配置对象的数据内容。
优选地,在解析处理过程中,所涉及的对应的配置文件、文档文件和配置代理文件使用相同的文件名称前缀,以便通过配置对象的配置事件确定配置文件名称,进而确定对应的文档文件和配置代理文件来获得配置对象的数据内容。
S130:获取游戏程序运行时所需加载的目标配置对象的标识数据。
在一些可行的实施方式中,本发明实施例提供的步骤S130可以包括:
S310:响应游戏程序中目标配置对象的目标配置事件的触发,获取传入所述目标配置事件的配置参数,作为所述目标配置对象的第一标识数据。
在一些可行的实施方式中,以上述名为GuideStep.json的配置文件所对应的配置事件GuideStep为例,传入配置事件GuideStep的配置参数为目标配置对象的"select_id"、"select_step"的数值。
S320:获取所述目标配置对象所属的目标配置事件名称,作为所述目标配置对象的第二标识数据。
可以理解的是,以上述配置事件GuideStep为例,对应的配置文件为GuideStep.json,对应的文档文件和配置代理文件也保持了相同的文件名称前缀,名称的统一更有利于直接实现数据内容的精准定位和获取。
S140:根据所述目标配置对象的标识数据,调用目标配置代理文件中的获取方法,读取目标文档文件中对应的数据内容,将所述对应的数据内容直接加载在所述游戏程序中。
在一些可行的实施方式中,本发明实施例提供的步骤S140可以包括:
S410:将所述目标配置对象的第一标识数据作为所述目标配置对象的至少一组标识键值对的键值。
S420:根据所述目标配置对象的第二标识数据确定对应的目标文档文件和目标配置代理文件。
S430:调用所述目标配置代理文件中的获取方法,并将所述至少一组标识键值对的键值传入所述获取方法中,读取所述目标文档文件中所述目标配置对象的数据内容。
可以理解的是,相对于现有技术中程序员根据策划人员提供的配置文件,直接在程序中编写配置的数据内容的方式,本发明实施例提供的方法无需在程序中手动输入而是利用程序自动读取并加载,提高了游戏开发的效率,降低了程序压力;并且通过Table表的作为中间的转换,使得数据读取更为快速,程序更为轻量化。此外,在游戏需要升级时,只需策划人员在配置文件中进行数据内容的修改,即可自动实现游戏加载时的更新。相对于现有技术中在游戏运行加载时对配置文件进行解析和读取数据内容的处理方式,本发明实施例提供的方法还可以将解析提前批量化的处理,而在游戏运行时只需调用获取方法读取数据内容,减轻了游戏运行的资源压力。
S440:在所述目标配置对象的标识数据不唯一或不存在时,提示事件参数错误,无法获得对应的数据内容。
本发明实施例还提供了一种JSON文件的数据转换加载装置,如图4所示,所述JSON文件的数据转换加载装置包括:
第一获取模块410,用于获取至少一个配置文件,所述至少一个配置文件为JSON文件格式;
解析模块420,所述解析模块包括文件数据转换模块和文件数据获取模块,其中:
文件数据转换模块421,用于读取所述至少一个配置文件中的数据内容,并将所述数据内容以Table表的格式存储于新生成的与所述至少一个配置文件一一对应的至少一个文档文件中,所述至少一个文档文件中包含了数据表和索引表;
文件数据获取模块422,用于根据所述至少一个配置文件的数据格式,自定义对所述至少一个文档文件中数据内容的获取方法,并存储于新生成的与所述至少一个配置文件一一对应的至少一个配置代理文件中;
第二获取模块430,用于获取游戏程序运行时所需加载的目标配置对象的标识数据;
第三获取模块440,用于根据所述目标配置对象的标识数据,调用目标配置代理文件中的获取方法,读取目标文档文件中对应的数据内容;
加载模块450,用于将所述对应的数据内容直接加载在所述游戏程序中。
本发明实施例所述的一种JSON文件的数据转换加载装置与方法实施例基于相同的发明构思,详情请参考方法实施例,在此不再赘述。
本发明实施例还提供了一种计算机设备,所述计算机设备包括:处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如本发明实施例的一种JSON文件的数据转换加载方法。
存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
本发明实施例所提供的方法实施例可以在计算机终端、服务器或者类似的运算装置中执行,即上述计算机设备可以包括计算机终端、服务器或者类似的运算装置。图5是本发明实施例提供的运行一种JSON文件的数据转换加载方法的计算机设备的硬件结构框图,如图5所示,该计算机设备的内部结构可包括但不限于:处理器、网络接口及存储器。其中,计算机设备内的处理器、网络接口及存储器可通过总线或其他方式连接,在本说明书实施例所示图5中以通过总线连接为例。
其中,处理器(或称CPU(Central Processing Unit,中央处理器))是计算机设备的计算核心以及控制核心。网络接口可选的可以包括标准的有线接口、无线接口(如WI-FI、移动通信接口等)。存储器(Memory)是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的存储器可以是高速RAM存储设备,也可以是非不稳定的存储设备(non-volatile memory),例如至少一个磁盘存储设备;可选的还可以是至少一个位于远离前述处理器的存储装置。存储器提供存储空间,该存储空间存储了电子设备的操作系统,可包括但不限于:Windows系统(一种操作系统),Linux(一种操作系统),Android(安卓,一种移动操作系统)系统、IOS(一种移动操作系统)系统等等,本发明对此并不作限定;并且,在该存储空间中还存放了适于被处理器加载并执行的一条或一条以上的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。在本说明书实施例中,处理器加载并执行存储器中存放的一条或一条以上指令,以实现上述方法实施例提供的一种JSON文件的数据转换加载方法。
本发明实施例还提供了一种计算机存储介质,所述计算机存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行如本发明实施例所述的一种JSON文件的数据转换加载方法。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、系统和服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。