一种FLASH分帧解析大数据内容的方法转让专利

申请号 : CN202011364065.6

文献号 : CN112489175B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李兴平肖显斌

申请人 : 四三九九网络股份有限公司

摘要 :

本发明提供一种FLASH分帧解析大数据内容的方法,包括:SWF执行程序将SWF运行文件内部的目标数据文件W转换为目标数据对象M;SWF执行程序按预设置的数据文件指定长度,将目标数据对象M按序划分为n段数据文件;SWF执行程序分帧解析加载各段数据文件。本发明优点为:对于加载到SWF运行文件内部的大数据文件,采用分帧解析的方式,一方面,保证对大数据文件顺利解析加载,不易出现卡顿,卡死甚至闪退现象,提高体验。另一方面,用户端可观看到渐变的画面,避免用户端枯燥等待,提高用户端使用体验。

权利要求 :

1.一种FLASH分帧解析大数据内容的方法,其特征在于,包括以下步骤:步骤1,SWF执行程序在按帧率循环运行各帧容器的过程中,当接收到需要加载外部的目标数据文件W的通知时,SWF执行程序在触发下一帧事件时,根据目标数据文件W的路径执行加载代码,将外部的目标数据文件W加载到SWF运行文件内部;

步骤2,SWF执行程序将SWF运行文件内部的目标数据文件W转换为目标数据对象M;

步骤3,SWF执行程序按预设置的数据文件指定长度,将目标数据对象M按序划分为n段数据文件,依次为第1段数据文件,第2段数据文件,...,第n段数据文件;

步骤4,SWF执行程序采用以下方法,分帧解析加载各段数据文件:

步骤4.1,SWF执行程序预设置延迟时间△t;

步骤4.2,令i=1;

步骤4.3,SWF执行程序对当前帧容器执行完成后,触发下一帧事件,将下一帧表示为第j帧容器;

步骤4.4,SWF执行程序进入运行第j帧容器的初始时刻,SWF执行程序一方面读取原渲染对象列表,将原渲染对象列表中的渲染对象输出,以维持画布上图像为持续显示状态;另一方面,SWF执行程序读取并解析第i段数据文件;在对第i段数据文件解析完成后,得到第i段数据对象;然后,SWF执行程序将第i段数据对象添加到原渲染对象列表,从而得到新渲染对象列表;其中,解析得到第i段数据对象的时间为t1;

步骤4.5,在得到新渲染对象列表后,SWF执行程序读取新渲染对象列表,并将新渲染对象列表中的渲染对象输出,从而更新画布上图像,使画布上渲染输出新图像;

步骤4.6,在画布上渲染输出新图像后,对第j帧容器的操作完成;触发下一帧事件;

步骤4.7,令j=j+1;

步骤4.8,SWF执行程序进入运行第j帧容器的初始时刻,判断当前时间t2与步骤4.4记录的时间t1的差值,是否大于延迟时间△t;如果大于,则达到对下一段数据文件进行解析加载的触发时刻,执行步骤4.9;如果小于,表明在第j帧容器的运行过程中,不需要执行对下一段数据文件进行解析加载的过程,执行步骤4.10;

步骤4.9,判断i是否等于n,如果不等于,表明对n段数据文件的解析加载操作尚未完成,则令i=i+1;返回执行步骤4.4;如果等于,表明已完成对n段数据文件的解析加载操作,执行步骤5;

步骤4.10,SWF执行程序读取当前的渲染对象列表,持续将渲染对象列表中的渲染对象输出,以维持画布上图像为持续显示状态;当达到设定的时间长度后,对第j帧容器的操作完成;触发下一帧事件;返回步骤4.7;

步骤5,SWF执行程序完成对目标数据对象M的分帧解析操作,结束流程。

说明书 :

一种FLASH分帧解析大数据内容的方法

技术领域

[0001] 本发明属于信息处理技术领域,具体涉及一种FLASH分帧解析大数据内容的方法。

背景技术

[0002] FLASH发布的SWF(shock wave flash)是一种按照帧率运行文件的执行程序,如:帧率24表示每秒运行24帧容器。在FLASH开发中,SWF执行程序运行每帧容器均存在时间和内存的限制,在SWF执行程序按帧率运行各帧容器时,常常需要同时加载并解析外部数据内容,然后再将加载解析完成的数据内容嵌入帧容器中执行。
[0003] SWF执行程序在加载并解析外部数据内容时,由于外部数据内容较大,并且,加解和解析过程是在同一帧容器运行中完成,而加载并解析外部数据内容需要占用较大的内存,由此导致SWF执行程序无法顺畅按帧率运行各帧容器,出现卡顿现象,甚至整个SWF执行程序卡死,闪退。

发明内容

[0004] 针对现有技术存在的缺陷,本发明提供一种FLASH分帧解析大数据内容的方法,可有效解决上述问题。
[0005] 本发明采用的技术方案如下:
[0006] 本发明提供一种FLASH分帧解析大数据内容的方法,包括以下步骤:
[0007] 步骤1,SWF执行程序在按帧率循环运行各帧容器的过程中,当接收到需要加载外部的目标数据文件W的通知时,SWF执行程序在触发下一帧事件时,根据目标数据文件W的路径执行加载代码,将外部的目标数据文件W加载到SWF运行文件内部;
[0008] 步骤2,SWF执行程序将SWF运行文件内部的目标数据文件W转换为目标数据对象M;
[0009] 步骤3,SWF执行程序按预设置的数据文件指定长度,将目标数据对象M按序划分为n段数据文件,依次为第1段数据文件,第2段数据文件,...,第n段数据文件;
[0010] 步骤4,SWF执行程序采用以下方法,分帧解析加载各段数据文件:
[0011] 步骤4.1,SWF执行程序预设置延迟时间△t;
[0012] 步骤4.2,令i=1;
[0013] 步骤4.3,SWF执行程序对当前帧容器执行完成后,触发下一帧事件,将下一帧表示为第j帧容器;
[0014] 步骤4.4,SWF执行程序进入运行第j帧容器的初始时刻,SWF执行程序一方面读取原渲染对象列表,将原渲染对象列表中的渲染对象输出,以维持画布上图像为持续显示状态;另一方面,SWF执行程序读取并解析第i段数据文件;在对第i段数据文件解析完成后,得到第i段数据对象;然后,SWF执行程序将第i段数据对象添加到原渲染对象列表,从而得到新渲染对象列表;其中,解析得到第i段数据对象的时间为t1;
[0015] 步骤4.5,在得到新渲染对象列表后,SWF执行程序读取新渲染对象列表,并将新渲染对象列表中的渲染对象输出,从而更新画布上图像,使画布上渲染输出新图像;
[0016] 步骤4.6,在画布上渲染输出新图像后,对第j帧容器的操作完成;触发下一帧事件;
[0017] 步骤4.7,令j=j+1;
[0018] 步骤4.8,SWF执行程序进入运行第j帧容器的初始时刻,判断当前时间t2与步骤4.4记录的时间t1的差值,是否大于延迟时间△t;如果大于,则达到对下一段数据文件进行解析加载的触发时刻,执行步骤4.9;如果小于,表明在第j帧容器的运行过程中,不需要执行对下一段数据文件进行解析加载的过程,执行步骤4.10;
[0019] 步骤4.9,判断i是否等于n,如果不等于,表明对n段数据文件的解析加载操作尚未完成,则令i=i+1;返回执行步骤4.4;如果等于,表明已完成对n段数据文件的解析加载操作,执行步骤5;
[0020] 步骤4.10,SWF执行程序读取当前的渲染对象列表,持续将渲染对象列表中的渲染对象输出,以维持画布上图像为持续显示状态;当达到设定的时间长度后,对第j帧容器的操作完成;触发下一帧事件;返回步骤4.7;
[0021] 步骤5,SWF执行程序完成对目标数据对象M的分帧解析操作,结束流程。
[0022] 本发明提供的一种FLASH分帧解析大数据内容的方法具有以下优点:
[0023] 对于加载到SWF运行文件内部的大数据文件,采用分帧解析的方式,一方面,保证对大数据文件顺利解析加载,不易出现卡顿,卡死甚至闪退现象,提高体验。另一方面,用户端可观看到渐变的画面,避免用户端枯燥等待,提高用户端使用体验。

附图说明

[0024] 图1为本发明提供的一种FLASH分帧解析大数据内容的方法的流程示意图。

具体实施方式

[0025] 为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0026] 本发明提供一种FLASH分帧解析大数据内容的方法,参考图1,包括以下步骤:
[0027] 步骤1,SWF执行程序在按帧率循环运行各帧容器的过程中,当接收到需要加载外部的目标数据文件W的通知时,SWF执行程序在触发下一帧事件时,根据目标数据文件W的路径执行加载代码,将外部的目标数据文件W加载到SWF运行文件内部;
[0028] 步骤2,SWF执行程序将SWF运行文件内部的目标数据文件W转换为目标数据对象M;
[0029] 步骤3,SWF执行程序按预设置的数据文件指定长度,将目标数据对象M按序划分为n段数据文件,依次为第1段数据文件,第2段数据文件,...,第n段数据文件;
[0030] 步骤4,SWF执行程序采用以下方法,分帧解析加载各段数据文件:
[0031] 步骤4.1,SWF执行程序预设置延迟时间△t;
[0032] 步骤4.2,令i=1;
[0033] 步骤4.3,SWF执行程序对当前帧容器执行完成后,触发下一帧事件,将下一帧表示为第j帧容器;
[0034] 步骤4.4,SWF执行程序进入运行第j帧容器的初始时刻,SWF执行程序一方面读取原渲染对象列表,将原渲染对象列表中的渲染对象输出,以维持画布上图像为持续显示状态;另一方面,SWF执行程序读取并解析第i段数据文件;在对第i段数据文件解析完成后,得到第i段数据对象;然后,SWF执行程序将第i段数据对象添加到原渲染对象列表,从而得到新渲染对象列表;其中,解析得到第i段数据对象的时间为t1;
[0035] 步骤4.5,在得到新渲染对象列表后,SWF执行程序读取新渲染对象列表,并将新渲染对象列表中的渲染对象输出,从而更新画布上图像,使画布上渲染输出新图像;
[0036] 步骤4.6,在画布上渲染输出新图像后,对第j帧容器的操作完成;触发下一帧事件;
[0037] 步骤4.7,令j=j+1;
[0038] 步骤4.8,SWF执行程序进入运行第j帧容器的初始时刻,判断当前时间t2与步骤4.4记录的时间t1的差值,是否大于延迟时间△t;如果大于,则达到对下一段数据文件进行解析加载的触发时刻,执行步骤4.9;如果小于,表明在第j帧容器的运行过程中,不需要执行对下一段数据文件进行解析加载的过程,执行步骤4.10;
[0039] 步骤4.9,判断i是否等于n,如果不等于,表明对n段数据文件的解析加载操作尚未完成,则令i=i+1;返回执行步骤4.4;如果等于,表明已完成对n段数据文件的解析加载操作,执行步骤5;
[0040] 步骤4.10,SWF执行程序读取当前的渲染对象列表,持续将渲染对象列表中的渲染对象输出,以维持画布上图像为持续显示状态;当达到设定的时间长度后,对第j帧容器的操作完成;触发下一帧事件;返回步骤4.7;
[0041] 步骤5,SWF执行程序完成对目标数据对象M的分帧解析操作,结束流程。
[0042] 本发明提供的FLASH分帧解析大数据内容的方法,思路可描述为:
[0043] (1)以SWF执行程序为涂鸦画板为例,涂鸦画板加载一个82.9M大数据文件,涂鸦画板在加载解析大数据文件时,易出现卡顿,卡死甚至闪退现象。
[0044] (2)本发明中,可将82.9M大数据文件拆分为10个8.29M的小数据文件段;涂鸦画板按24帧率循环运行24个帧容器时,首先运行第1帧容器,在运行第1帧容器的初始时刻,涂鸦画板一方面读取原渲染对象列表,将原渲染对象列表中的渲染对象输出,以维持画布上图像为持续显示状态;另一方面,涂鸦画板读取并解析第1段数据文件;在对第1段数据文件解析完成后,得到第1段数据对象;然后,SWF执行程序将第1段数据对象添加到原渲染对象列表,从而得到新渲染对象列表;然后,SWF执行程序读取新渲染对象列表,并将新渲染对象列表中的渲染对象输出,从而更新画布上图像,使画布上渲染输出新图像;
[0045] 因此,在上述这一过程中,画布上的图像由原图像更新为新图像,从用户角度,可看出画布上图像发生变化;
[0046] 当对第1帧容器运行完成后,第1段数据对象解析完成到当前的时间,小于预设延迟时间△t;因此,SWF执行程序持续对渲染对象列表中的渲染对象输出,从而维持画布上图像为持续显示状态;如此不断进行,当运行到某个帧容器时,假设当运行到第5帧容器时,第1段数据对象解析完成到当前的时间,大于预设延迟时间△t,然后,SWF执行程序再进行对第2段数据对象解析和增加到渲染对象列表的操作,在本帧中,当SWF执行程序读取新渲染对象列表,并将新渲染对象列表中的渲染对象输出,从而更新画布上图像,使画布上渲染输出新图像;
[0047] 如此不断循环,实现将10个小数据文件段的解析渲染操作,分散到间隔的各个帧容器中,一方面,对于用户端,可看到不断进行渐变的图像,直到完成对10个小数据文件段的渲染,提高用户的观看体验;另一方面,分散间隔的帧容器分次解析渲染小的数据文件段,可避免SWF执行程序发生卡顿现象。
[0048] 以10000长度数据,SWF为24帧率为例:每帧循环解析数据的长度可以为200长度为限,达到这一循环次数时,暂时先跳出循环,每帧运行时间是41.66毫米,延迟时间可以设置为200毫秒,因此,经过200毫秒延迟后,SWF内部已向后运行到200/41.66四帧以后的帧容器,再继续执行下一段小数据文件的解析操作。
[0049] 因此,本发明中,将大的数据文件一次加载请求并且解析放在不同的帧容器中运行,实现对大数据文件的顺利加载,避免整个SWF卡死,甚至崩溃。
[0050] 本发明提供的FLASH分帧解析大数据内容的方法,具有以下优点:
[0051] (1)SWF执行程序将外部大数据文件一次加载到SWF运行文件内部,避免无需外部拆分为多个数据文件再多次加载请求,提高对外部大数据文件请求的效率;
[0052] (2)对于加载到SWF运行文件内部的大数据文件,采用分帧解析的方式,一方面,保证对大数据文件顺利解析加载,不易出现卡顿,卡死甚至闪退现象,提高体验。另一方面,用户端可观看到渐变的画面,避免用户端枯燥等待,提高用户端使用体验。
[0053] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。