一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

动画绘制方法、装置、存储介质及电子设备与流程

2022-03-26 15:00:21 来源:中国专利 TAG:


1.本公开涉及计算机处理领域,具体涉及一种动画绘制方法、装置、存储介质及电子设备。


背景技术:

2.在图形用户界面的许多场景中经常需要播放动画。例如在直播场景中,在语音房间中的用户坐席上可以播放诸如座位框业务,挂件业务,盖章业务等等的动画,都是使用svga进行动画展示的。
3.现有的技术是通过使用svgaimageview进行svga动画的播放。但在使用svgaimageview一定要在主ui线程上进行,主线程性能损耗大。
4.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

5.本公开的目的在于提供一种动画绘制方法、装置、存储介质及电子设备,旨在实现异步绘制svga动画的目的。
6.本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
7.根据本公开实施例的一方面,提供了一种动画绘制方法,包括:响应于所述图形用户界面中多个目标动画的绘制指令,获取所述多个目标动画的动画绘制信息;其中,所述动画绘制信息包括所述目标动画在所述图形用户界面中的动画位置以及所述目标动画的动画资源;通过包含异步线程处理机制的动画播放容器,根据所述多个目标动画的动画绘制信息在所述图形用户界面上异步绘制所述多个目标动画。
8.根据本公开的一些实施例,基于前述方案,所述通过包含异步线程处理机制的动画播放容器,根据所述多个目标动画的动画绘制信息在所述图形用户界面上异步绘制所述多个目标动画,包括:构建所述多个目标动画分别对应的动画代理类;利用各动画代理类分别根据动画代理类对应目标动画的动画绘制信息创建各目标动画对应的绘制指令;通过包含异步线程处理机制的动画播放容器异步执行各目标动画对应的绘制指令,以在所述图形用户界面上异步绘制所述多个目标动画。
9.根据本公开的一些实施例,基于前述方案,所述获取所述多个目标动画的动画绘制信息包括:获取第一目标动画在所述图形用户界面中的动画位置;所述第一目标动画为多个目标动画中的任一目标动画;所述获取第一目标动画在所述图形用户界面中的动画位置包括:基于所述第一目标动画的绘制指令确定与所述第一目标动画对应的目标关联对象;获取所述目标关联对象在所述图形用户界面中的位置信息,以及获取所述第一目标动画与所述目标关联对象在所述图形用户中的相对位置信息;根据所述位置信息和所述相对位置信息确定所述第一目标动画在所述图形用户界面中的动画位置。
10.根据本公开的一些实施例,基于前述方案,在获取所述第一目标动画在所述图形用户界面中的动画位置之后,所述方法还包括:将所述第一目标动画对应的目标关联对象的位置信息以及所述第一目标动画与所述目标关联对象的相对位置信息存储至所述第一目标动画对应的动画代理类中;在所述图形用户界面中所述目标关联对象的位置信息改变时,对所述动画代理类中所述第一目标动画对应的目标关联对象的位置信息进行更新。
11.根据本公开的一些实施例,基于前述方案,在获取目标动画的动画资源之后,所述方法还包括:利用可绘制资源类将目标动画的动画资源转化为显示帧;将目标动画的所述显示帧存储至目标动画对应的动画代理类中。
12.根据本公开的一些实施例,基于前述方案,所述动画代理类中存储有目标动画对应的动画位置和显示帧;所述绘制指令包括各目标动画中各显示帧的单帧绘制请求;所述利用各所述动画代理类分别根据所述动画代理类对应目标动画的动画绘制信息创建该目标动画对应的绘制指令包括:利用第一目标动画对应的动画代理类根据第一目标动画的动画绘制信息创建第一目标动画对应各显示帧的单帧绘制请求;所述第一目标动画为多个目标动画中的任一目标动画;所述利用第一目标动画对应的动画代理类根据第一目标动画的动画绘制信息创建第一目标动画对应各显示帧的单帧绘制请求,包括:基于所述第一目标动画对应的动画代理类中存储的第一目标动画的显示帧提取当前显示帧,并重写所述当前显示帧的绘制逻辑得到所述第一目标动画的当前绘制帧;以及基于所述第一目标动画对应的动画代理类中存储的第一目标动画的动画位置,提取第一目标动画的所述当前绘制帧的当前绘制位置;根据第一目标动画的所述当前绘制帧和所述当前绘制位置创建第一目标动画中当前绘制帧对应的单帧绘制请求,并将所述单帧绘制请求发送至所述动画播放容器;在所述动画播放容器基于所述单帧绘制请求完成第一目标动画中当前绘制帧的绘制时,重复上述创建及发送单帧绘制请求的过程直至将所述第一目标动画的所有显示帧的单帧绘制请求发送完成。
13.根据本公开的一些实施例,基于前述方案,所述通过包含异步线程处理机制的动画播放容器异步执行各所述绘制指令包括:通过所述动画播放容器依序执行所述第一目标动画各显示帧的单帧绘制请求;所述通过所述动画播放容器依序执行所述第一目标动画各显示帧的单帧绘制请求,包括:响应于所述第一目标动画对应的动画代理类发送的所述第一目标动画当前绘制帧的单帧绘制请求,通过所述动画播放容器提取所述单帧绘制请求对应的所述当前绘制帧和所述当前绘制位置;将所述当前绘制位置对应的显示帧删除,并在所述当前绘制位置绘制所述第一目标动画的所述当前绘制帧;依序重复上述当前绘制帧的绘制过程,直至将所述第一目标动画的所有显示帧绘制完成。
14.根据本公开实施例的第二方面,提供了一种动画绘制装置,包括:响应模块,用于响应于所述图形用户界面中多个目标动画的绘制指令,获取所述多个目标动画的动画绘制信息;其中,所述动画绘制信息包括所述目标动画在所述图形用户界面中的动画位置以及所述目标动画的动画资源;绘制模块,用于通过包含异步线程处理机制的动画播放容器,根据所述多个目标动画的动画绘制信息在所述图形用户界面上异步绘制所述多个目标动画。
15.根据本公开实施例的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中的动画绘制方法。
16.根据本公开实施例的第四方面,提供了一种电子设备,其特征在于,包括:一个或
多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中的动画绘制方法。
17.本公开示例性实施例可以具有以下部分或全部有益效果:
18.在本公开的一些实施例所提供的技术方案中,在接收到图形用户界面中多个目标动画的绘制指令时,首先获取各目标动画的动画绘制信息,然后利用动画播放容器的异步线程处理机制,利用异步线程来根据动画绘制信息进行多个目标动画的绘制,一方面能够在异步线程中绘制目标动画,进而减少ui线程的开销,优化页面卡顿;另一方面,可以利用动画播放容器的异步线程池实现多个目标动画的异步绘制,减小位置测量和动画绘制的开销。
19.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
20.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
21.图1示意性示出本公开示例性实施例中一种动画绘制方法的流程示意图;
22.图2示意性示出本公开示例性实施例中一种语音房间的图形用户界面示意图;
23.图3示意性示出本公开示例性实施例中一种动画播放容器与语音房间的位置关系示意图;
24.图4示意性示出本公开示例性实施例中一种动画绘制方法的流程示意图;
25.图5示意性示出本公开示例性实施例中一种动画绘制装置的组成示意图;
26.图6示意性示出本公开示例性实施例中一种计算机可读存储介质的示意图;
27.图7示意性示出本公开示例性实施例中一种电子设备的计算机系统的结构示意图。
具体实施方式
28.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
29.此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
30.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
31.附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
32.本技术的技术方案可以应用于终端设备界面中的动画播放场景,终端设备可以是手机、电脑或者手持类终端等;动画可以是svga动画,svga(super video graphics array)是一种高级视频图形阵列,是一种兼容安卓,ios和web,可以实现多种动画的动画格式,例如直播场景中的挂件播放动画、座位框播放动画等等。
33.以下对本公开实施例的技术方案的实现细节进行详细阐述。
34.图1示意性示出本公开示例性实施例中一种动画绘制方法的流程示意图。如图1所示,该动画绘制方法包括步骤s1至步骤s2:
35.步骤s1,响应于图形用户界面中多个目标动画的绘制指令,获取多个目标动画的动画绘制信息;其中,动画绘制信息包括目标动画在图形用户界面中的动画位置以及目标动画的动画资源;
36.步骤s2,通过包含异步线程处理机制的动画播放容器,根据多个目标动画的动画绘制信息在图形用户界面上异步绘制多个目标动画。
37.在本公开的一些实施例所提供的技术方案中,在接收到图形用户界面中多个目标动画的绘制指令时,首先获取各目标动画的动画绘制信息,然后利用动画播放容器的异步线程处理机制,利用异步线程来根据动画绘制信息进行多个目标动画的绘制,一方面能够在异步线程中绘制目标动画,进而减少ui线程的开销,优化页面卡顿;另一方面,可以利用动画播放容器的异步线程池实现多个目标动画的异步绘制,减小位置测量和动画绘制的开销。
38.下面,将结合附图及实施例对本示例实施方式中的动画绘制方法的各个步骤进行更详细的说明。
39.在步骤s1中,响应于图形用户界面中多个目标动画的绘制指令,获取多个目标动画的动画绘制信息;其中,动画绘制信息包括目标动画在图形用户界面中的动画位置以及目标动画的动画资源。
40.具体地,在图形用户界面中经常会需要进行目标动画的绘制。例如在直播场景中,一个语音房间包括多个用户坐席,每个坐席可能同时展示着座位框,挂件,盖章等多个业务功能,都需要使用svga进行动画展示。所以,目标动画可以是一个坐席处需要绘制的svga动画。
41.图2示意性示出本公开示例性实施例中一种语音房间的图形用户界面示意图。如图2所示的图形用户界面,在该直播场景下共包括了9个坐席201~209,其中坐席202和坐席209处都包含了挂件业务。并且不同的挂件业务,svga动画绘制的位置也不同,坐席202处的挂件绘制在坐席202的上方和下方,坐席209处挂件绘制在坐席209的右上方。
42.因此,不同的坐席会有不同的svga动画绘制需要。当语音房间中某一坐席需要展示业务时,直播平台客户端则会结合该目标坐席和业务需要生成坐席动画的绘制指令。例如图2中目标坐席209的“帽子”挂件坐席动画。
43.不同的坐席需要绘制不同的目标动画,因此直播平台客户端可以分别生成多个目标动画的绘制指令,由直播平台后台服务器响应于多个绘制指令,获取每一绘制指令分别
对应的目标动画的动画绘制信息。
44.其中,动画绘制信息可以包括需要绘制的动画位置以及动画资源。动画资源是指待绘制的动画内容数据,例如座位框、挂件、盖章等动画内容,同一个坐席的不同业务可以对应不同的动画资源;而动画位置也就是动画需要绘制在图形用户界面上的坐标位置信息。
45.在步骤s2中,通过包含异步线程处理机制的动画播放容器,根据多个目标动画的动画绘制信息在图形用户界面上异步绘制多个目标动画。
46.在本公开的一个实施例中,预先进行视频容器的开发,也就是得到audiohallanimtextureview(动画播放容器),并布置在图形用户界面的上层。
47.图3示意性示出本公开示例性实施例中一种动画播放容器与直播间的位置关系示意图,参考图3所示,301为语音房间,圆圈302表示的是房间的坐席,在语音房间为301的上层布置动画播放容器303。
48.动画播放容器是一种视频容器,能够把一些格式的文件打包到一起生成一文件,通过视频播放软件可以打开他的包裹文件,进而进行播放。
49.具体来说,audiohallanimtextureview基于textureview(纹理视图)实现,可以实现异步绘制内容流。将svga动画的绘制委托给了audiohallanimtextureview处理,通过audiohallanimtextureview可以实现svga动画的异步绘制。
50.另外,audiohallanimtextureview也可以存储下委托它进行绘制的animdrawabledelegate,以便对多个svga动画进行统一的管理。
51.动画播放容器内包括一个由异步线程构建的handler(异步线程处理机制),handler用来处理异步消息,异步线程handler收到了绘制指令后会在创建这个handler的线程上进行绘制操作,能够通过一个视频容器同时处理多个svga的动画播放。
52.相较于现有技术中使用svgaimageview视频容器进行svga动画的播放,使用svgaimageview时一个svga动画必须对应一个单独的svgaimageview视频容器的情况,本公开提供的方法中,只有一个audiohallanimtextureview动画播放容器,该view(动画播放容器)可以同时处理多个svga的动画播放,所以当svga动画过多时,可以减小view在测量、布局和绘制方面的开销,避免出现页面卡顿的现象。
53.在本公开的一个实施例中,接收到绘制指令后,可以获取该指令对应的动画绘制信息,通过异步线程来根据动画资源数据和动画位置信息进行动画绘制。
54.相较于现有技术中使用svgaimageview进行动画绘制必须要在主线程上进行,使用audiohallanimtextureview动画播放容器创建的异步线程完成动画绘制能够减小ui线程的开销,优化页面卡顿。
55.在本公开的一个实施例中,对于步骤s2,通过包含异步线程处理机制的动画播放容器,根据多个目标动画的动画绘制信息在图形用户界面上异步绘制多个目标动画,包括:
56.步骤s21,构建多个目标动画分别对应的动画代理类;
57.步骤s22,利用各动画代理类分别根据动画代理类对应目标动画的动画绘制信息创建各目标动画对应的绘制指令;
58.步骤s23,通过包含异步线程处理机制的动画播放容器异步执行各目标动画对应的绘制指令,以在图形用户界面上异步绘制多个目标动画。
59.接下来,对步骤s21至步骤s23进行详细说明。
60.在步骤s21中,构建多个目标动画分别对应的动画代理类。
61.具体地,在接收到目标动画的绘制指令之后,会预先为该目标动画创建其对应的animdrawabledelegate(动画代理类),用于全程管理该目标动画的动画绘制过程。动画代理类在编程领域中中属于“类”的爱念,类是一个抽象的概念,是对某一类事物的抽象。
62.需要说明的是,动画代理类为了能够实现动画绘制的管理,需要预先存储该动画代理类对应的目标动画对应的动画位置和显示帧。因此,在步骤步骤s21创建了动画代理类之后,还需要将目标动画对应的动画位置和显示帧存储至animdrawabledelegate中。
63.①
动画代理类中的动画位置
64.对于目标动画的动画位置来说,可以通过目标动画对应的目标关联对象来确定。通常来说,绘制动画可以是针对图形用户界面上的关联对象进行绘制,因此动画绘制的位置与关联对象的位置有关,与动画与关联对象之间的相对位置也有关系。
65.以图3所示的图形用户界面为例,一个语音房间中布局着多个坐席,即关联对象,每一个坐席有其对应的坐标,绘制的目标动画是针对与坐席来说的,所以在确定动画位置时,需要确定该动画绘制指令对应的目标坐席的位置,另外,还需要获取svga动画与坐席的相对位置,比如绘制在左侧或右侧等。
66.因此,进一步地,对于多个目标动画中任一第一目标动画来说,获取第一目标动画在图形用户界面中的动画位置包括:基于第一目标动画的绘制指令确定与第一目标动画对应的目标关联对象;获取目标关联对象在图形用户界面中的位置信息,以及获取第一目标动画与目标关联对象在图形用户中的相对位置信息;根据位置信息和相对位置信息确定第一目标动画在图形用户界面中的动画位置。
67.其中,在获取与目标动画对应的目标关联对象在图形用户界面中的位置信息时,可以有两种形式。
68.其一是预先存储了图形用户界面中所有关联对象的位置信息,在接收到绘制指令时直接提取目标对象的位置信息即可。基于上述方法,在动画绘制时只需要根据绘制指令获取目标动画中动画与关联对象之间的相对位置关系,就能结合已存储的关联对象的位置计算出动画位置,一定程度上减少了页面测量时的开销,优化了页面性能。
69.另一种是在接收到绘制指令时根据绘制指令实时获取关联对象的位置信息。由于没有预先存储关联对象的位置信息,所以需要在接收到绘制指令时,获取关联对象的位置信息以及目标动画与关联对象的相对位置信息,然后根据获取的信息进行动画位置的计算。
70.需要说明的是,目标关联对象的位置信息和目标动画与目标关联对象之间的相对位置关系都需要存储在预先创建的动画代理类animdrawabledelegate中,进而由动画代理类实现目标动画的绘制管理。
71.因此,在获取目标动画在图形用户界面中的动画位置之后,并且构建好动画代理类之后,方法还包括:将第一目标动画对应的目标关联对象的位置信息以及第一目标动画与目标关联对象的相对位置信息存储至第一目标动画对应的动画代理类中。
72.在本公布开的一个实施例中,方法还包括:在图形用户界面中目标关联对象的位置信息改变时,对动画代理类中第一目标动画对应的目标关联对象的位置信息进行更新。
73.具体地,图形用户界面中关联对象的布局信息有可能发生变化,当关联对象的布局发生变化时,布局中的各个关联对象的位置信息也将会改变,需要实时对动画代理类中存储的关联对象的位置信息也进行更新,进而保证动画位置计算正确,准确无误地完成目标动画的绘制。
74.举例来说,图3所示的语音房间中,当语音房间内坐席布局改变时,能够及时通知动画代理类,并同步更新坐席的最新位置信息。
75.②
动画代理类中的显示帧
76.而对于目标动画的显示帧来说,需要借助其他的工具将动画资源提前转换为显示帧,再将显示帧存储在动画代理类中。
77.进一步地,在获取目标动画的动画资源之后,并且构建好动画代理类之后,方法还包括:利用可绘制资源类将目标动画的动画资源转化为显示帧;将目标动画的显示帧存储至目标动画对应的动画代理类中。
78.其中,可绘制资源类是指ccsvgadrawable(帧动画)模块,该模块可以对获取的坐席动画的动画资源进行帧动画计算,把动画资源转化为drawable(显示帧),view就能够把它渲染到屏幕上。与动画代理类相似,都是属于编程中“类”的概念。
79.在计算了显示帧之后,ccsvgadrawable模块将当前显示帧存储在animdrawabledelegate动画代理类中,以用于后续动画代理类进行动画绘制。
80.在步骤s22中,利用各动画代理类分别根据动画代理类对应目标动画的动画绘制信息创建各目标动画对应的绘制指令。
81.animdrawabledelegate动画代理类存储着svga动画需要显示的位置,以及待播放的显示帧。每一次绘制svga时,动画代理类都会创建每一帧的绘制指令,进而将绘制工作代理给audiohallanimtextureview播放容器进行,并告知audiohallanimtextureview播放容器应该在那个动画位置上进行svga的绘制工作。
82.另外,一个目标动画包含有多个帧,因此在完成目标动画的绘制时,创建目标动画的绘制指令也就是创建目标动画中各显示帧对应的单帧绘制请求。
83.进一步地,步骤s22中将多个动画代理类具体为单个动画代理类进行动画代理的过程来看,也就是:利用第一目标动画对应的动画代理类根据第一目标动画的动画绘制信息创建第一目标动画对应各显示帧的单帧绘制请求,具体包括以下步骤:
84.步骤s221,基于第一目标动画对应的动画代理类中存储的第一目标动画的显示帧提取当前显示帧,并重写当前显示帧的绘制逻辑得到第一目标动画的当前绘制帧;
85.步骤s222,基于第一目标动画对应的动画代理类中存储的第一目标动画的动画位置,提取第一目标动画的当前绘制帧的当前绘制位置;
86.步骤s223,根据第一目标动画的当前绘制帧和当前绘制位置创建第一目标动画中当前绘制帧对应的单帧绘制请求,并将单帧绘制请求发送至动画播放容器;
87.步骤s224,在动画播放容器基于单帧绘制请求完成第一目标动画中当前绘制帧的绘制时,重复上述创建及发送单帧绘制请求的过程直至将第一目标动画的所有显示帧的单帧绘制请求发送完成。
88.在步骤s221中,由于本公开进行动画绘制使用的视图容器为预先开发的audiohallanimtextureview动画播放容器,因此,需要对ccsvgadrawable模块的得到的
drawable显示帧的绘制逻辑进行重写,进而能够被动画播放容器audiohallanimtextureview绘制。
89.因此,从动画代理类中存储的显示帧提取当前显示帧,并重写当前显示帧的绘制逻辑得到能够被动画播放容器绘制的当前绘制帧。需要说明的是当前显示帧是利用ccsvgadrawable模块得到的绘制逻辑,而当前绘制帧是经重写后动画播放容器可读取的绘制逻辑,两者帧的内容相同,但绘制逻辑不同。
90.在步骤s222中,animdrawabledelegate动画代理类提取预先获取的目标动画的动画位置作为当前绘制帧的当前绘制位置,即指示动画绘制的位置。
91.在步骤s223中,根据当前显示帧和当前绘制位置创建单帧绘制请求,并将单帧绘制请求发送给动画播放容器,用来将绘制当前显示帧的内容委托代理给audiohallanimtextureview动画播放容器。
92.在步骤s224中,动画播放容器会执行单帧绘制请求,并将绘制结果反馈给动画播放容器。如果接收到绘制成功的指令,那么重复以上的步骤继续进行动画的下一帧绘制,也就是再提取当前显示帧,重写当前显示帧的绘制逻辑得到当前绘制帧,创建单帧绘制请求,如此循环直到处理完svga的最后一个关键帧,这样一来从视觉上看,就形成了动画效果。
93.在步骤s23中,通过包含异步线程处理机制的动画播放容器异步执行各目标动画对应的绘制指令,以在图形用户界面上异步绘制多个目标动画。
94.在动画绘制时,由于animdrawabledelegate动画代理类将动画绘制的内容代理给了audiohallanimtextureview动画播放容器,因此在完成绘制是具体是由动画播放容器完成的。具体地,动画播放容器负责执行多个不同目标动画的绘制指令,而每一目标动画的绘制指令又包括多个不同显示帧的单帧绘制请求。
95.进一步地,步骤s23具体为动画播放容器执行单帧绘制请求时,通过动画播放容器依序执行第一目标动画各显示帧的单帧绘制请求,具体包括以下步骤:
96.步骤s231,响应于第一目标动画对应的动画代理类发送的第一目标动画当前绘制帧的单帧绘制请求,通过动画播放容器提取单帧绘制请求对应的当前绘制帧和当前绘制位置;
97.步骤s232,将当前绘制位置对应的显示帧删除,并在当前绘制位置绘制第一目标动画的当前绘制帧;
98.步骤s233,依序重复上述当前绘制帧的绘制过程,直至将第一目标动画的所有显示帧绘制完成。
99.具体地,动画播放容器响应于动画代理类发送的单帧绘制请求,单帧绘制请求中包括了待绘制的帧以及位置。
100.利用视图容器中的canvas控件,先将当前绘制位置已有的drawable清除,再将根据单帧绘制请求获得的当前绘制帧绘制在canvas的这个位置上。
101.基于上述方法,当需要绘制svga动画时,会创建一个animdrawabledelegate动画代理类专门用于管理该的svga动画的绘制。该动画代理类一方面用于存储关于绘制目标动画的相关信息,比如显示帧、动画位置等,能够确定svga动画的显示位置,svga动画的开启与结束,以及当前正在显示的svga的帧drawable;另一方面还用于将绘制工作代理给动画播放容器audiohallanimtextureview进行,绘制每一帧时告知动画播放容器
audiohallanimtextureview应该在哪一个位置上进行哪一帧的svga动画绘制。
102.同时,由于同一个动画播放容器audiohallanimtextureview同时管控着多个动画代理类animdrawabledelegate,所以动画播放容器audiohallanimtextureview同时可以绘制多个svga动画,减小ui线程的开销,优化页面卡顿。
103.图4示意性示出本公开示例性实施例中一种动画绘制方法的流程示意图。参考图4所示,对动画绘制的过程进行详细描述。具体过程如下:
104.步骤s401,获取svga动画与目标坐席的相对位置。
105.步骤s402,获取目标坐席的位置;可以从animdrawabledelegate中提取。
106.步骤s403,获取svga动画资源。
107.步骤s404,构建animdrawabledelegate动画代理类;
108.步骤s405,ccsvgadrawable计算当前需要绘制的帧drawable;即根据动画资源进行计算;
109.步骤s406,通知animdrawabledelegate;即将计算的当前显示帧drawable存储至animdrawabledelegate中。
110.步骤s407,通知audiohallanimtextureview;即animdrawabledele-gate根据当前绘制帧和当前绘制位置发送单帧绘制请求。
111.步骤s408,根据当前绘制位置清除该位置上的图片;
112.步骤s409,在canvas上绘制当前绘制帧;
113.步骤s410,判断当前绘制帧是否为最后一帧;如果不是,则执行步骤s405,重复计算并绘制;如果是,则跳转至步骤s411绘制完毕。
114.图5示意性示出本公开示例性实施例中一种动画绘制装置的组成示意图,如图5所示,该动画绘制装置500可以包括响应模块501和绘制模块502。其中:
115.响应模块501,用于响应于图形用户界面中多个目标动画的绘制指令,获取多个目标动画的动画绘制信息;其中,动画绘制信息包括目标动画在图形用户界面中的动画位置以及目标动画的动画资源;
116.绘制模块502,用于通过包含异步线程处理机制的动画播放容器,根据多个目标动画的动画绘制信息在图形用户界面上异步绘制多个目标动画。
117.根据本公开的示例性实施例,绘制模块502包括构建单元、指令单元以及绘制单元,构建单元用于构建多个目标动画分别对应的动画代理类,指令单元用于利用各动画代理类分别根据动画代理类对应目标动画的动画绘制信息创建各目标动画对应的绘制指令;绘制单元用于通过包含异步线程处理机制的动画播放容器异步执行各目标动画对应的绘制指令,以在图形用户界面上异步绘制多个目标动画。
118.根据本公开的示例性实施例,响应模块501还用于基于第一目标动画的绘制指令确定与第一目标动画对应的目标关联对象;获取目标关联对象在图形用户界面中的位置信息,以及获取第一目标动画与目标关联对象在图形用户中的相对位置信息;根据位置信息和相对位置信息确定第一目标动画在图形用户界面中的动画位置。
119.根据本公开的示例性实施例,响应模块501还用于在获取第一目标动画在图形用户界面中的动画位置之后,将第一目标动画对应的目标关联对象的位置信息以及第一目标动画与目标关联对象的相对位置信息存储至第一目标动画对应的动画代理类中;在图形用
户界面中目标关联对象的位置信息改变时,对动画代理类中第一目标动画对应的目标关联对象的位置信息进行更新。
120.根据本公开的示例性实施例,响应模块501还用于在获取目标动画的动画资源之后,利用可绘制资源类将目标动画的动画资源转化为显示帧;将目标动画的显示帧存储至目标动画对应的动画代理类中。
121.根据本公开的示例性实施例,动画代理类中存储有目标动画对应的动画位置和显示帧;绘制指令包括各目标动画中各显示帧的单帧绘制请求;指令单元还用于基于第一目标动画对应的动画代理类中存储的第一目标动画的显示帧提取当前显示帧,并重写当前显示帧的绘制逻辑得到第一目标动画的当前绘制帧;以及基于第一目标动画对应的动画代理类中存储的第一目标动画的动画位置,提取第一目标动画的当前绘制帧的当前绘制位置;根据第一目标动画的当前绘制帧和当前绘制位置创建第一目标动画中当前绘制帧对应的单帧绘制请求,并将单帧绘制请求发送至动画播放容器;在动画播放容器基于单帧绘制请求完成第一目标动画中当前绘制帧的绘制时,重复上述创建及发送单帧绘制请求的过程直至将第一目标动画的所有显示帧的单帧绘制请求发送完成。
122.根据本公开的示例性实施例,绘制单元还用于响应于第一目标动画对应的动画代理类发送的第一目标动画当前绘制帧的单帧绘制请求,通过动画播放容器提取单帧绘制请求对应的当前绘制帧和当前绘制位置;将当前绘制位置对应的显示帧删除,并在当前绘制位置绘制第一目标动画的当前绘制帧;依序重复上述当前绘制帧的绘制过程,直至将第一目标动画的所有显示帧绘制完成。
123.上述的动画绘制装置500中各模块的具体细节已经在对应的动画绘制方法中进行了详细的描述,因此此处不再赘述。
124.应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
125.在本公开的示例性实施例中,还提供了一种能够实现上述方法的存储介质。图6示意性示出本公开示例性实施例中一种计算机可读存储介质的示意图,如图6所示,描述了根据本公开的实施方式的用于实现上述方法的程序产品600,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如手机上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
126.在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。图7示意性示出本公开示例性实施例中一种电子设备的计算机系统的结构示意图。
127.需要说明的是,图7示出的电子设备的计算机系统700仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
128.如图7所示,计算机系统700包括中央处理单元(central processing unit,cpu)701,其可以根据存储在只读存储器(read-only memory,rom)702中的程序或者从存储部分708加载到随机访问存储器(random access memory,ram)703中的程序而执行各种适当的动作和处理。在ram 703中,还存储有系统操作所需的各种程序和数据。cpu 701、rom 702以
及ram 703通过总线704彼此相连。输入/输出(input/output,i/o)接口705也连接至总线704。
129.以下部件连接至i/o接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(cathode ray tube,crt)、液晶显示器(liquid crystal display,lcd)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如lan(local area network,局域网)卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至i/o接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
130.特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(cpu)701执行时,执行本公开的系统中限定的各种功能。
131.需要说明的是,本公开实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(erasable programmable read only memory,eprom)、闪存、光纤、便携式紧凑磁盘只读存储器(compact disc read-only memory,cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
132.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组
合来实现。
133.描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
134.作为另一方面,本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
135.应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
136.通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本公开实施方式的方法。
137.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。
138.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献