一种创建过渡动画的方法及装置
技术领域
本发明涉及计算机动画领域,特别涉及一种创建过渡动画的方法及装置。
背景技术
过渡动画常用于计算机图形用户界面中,使图形界面由一个状态自然平滑地过渡到另一个状态,避免让用户产生突兀或不知所措的感觉。过渡动画需要流畅清晰,掉帧、模糊的过渡动画会造成不好的用户体验。目前的过渡动画一般采用淡入淡出,飞入飞出等方式,在流畅度和清晰度上能够满足用户的视觉体验。
申请号为CN201310066531.6的中国专利提供了一种过渡动画的控制方法和装置,其中,过渡动画的控制方法包括:切割原始视图,得到原始视图切片Pj,其中,j为自然数;分别计算第0至第j个原始视图切片Pj沿预设贝塞尔曲线弹出或收缩后的目标顶点坐标分别控制第0至第j个原始视图切片Pj按照目标顶点坐标形变,得到目标视图切片P′j;按照j值顺序组合目标视图切片P′j,得到目标视图;以及播放目标视图,得到过渡动画。该专利虽然解决了现有技术中无法自定义过渡动画动作路径的问题,但占用内存较大。
目前创建过渡动画时,主要利于开源的过渡动画类库如TweenLite,或者原生的过渡动画类。但是现有的过渡动画在创建的过程中主要存在以下问题:
1,占用内存空间大。
2,创建多个过渡动画时消耗CPU运算资源多。现有技术中,如果要创建多个过渡动画,需要创建多个运转动画,从而占用大量的设备运算资源,给CPU带来很大的压力。
3,现有技术中有些技术存在弱引用,导致动画在运动中容易卡住。
因此,有必要提供一种占用内存小,节约CPU资源的创建过渡动画的方法。
发明内容
为了解决现有技术存在的上述问题,本发明提供了一种创建过渡动画的方法,占用内存小,节约CPU资源,本发明的方法包括以下步骤:
S1、接收创建过渡动画任务,获取过渡动画任务的属性信息;所述由应用程序发送;
S2、检测内存的静态内存区中是否正在运行用于创建过渡动画的调度器,若否,则启动所述调度器;若是,则根据获取的所述属性信息,将接收到的创建过渡动画任务挂载在所述调度器上;
S3、调度器根据获取的每个过渡动画任务的属性信息创建相应的过渡动画;
S4、在完成所有的创建过渡动画任务后停止运行所述调度器。
进一步地,S1中所述的过渡动画任务的属性信息包括原始图像、目标图像和动画配置信息。
进一步地,S2中所述的调度器包括计时器和配置模块,所述计时器包括计时单元和执行单元,所述配置模块用于根据所述动画配置信息获取过渡动画参数信息,所述计时单元用于根据预设的时间间隔向所述执行单元发送创建指令,所述执行单元用于根据所述创建指令和所述过渡动画参数信息创建过渡动画。
进一步地,S1中获取的所述属性信息还包括由接口输入过渡效果信息,所述过渡效果包括淡入淡出效果。
进一步地,S3中所述的调度器根据获取的每个过渡动画任务的属性信息创建相应的过渡动画包括:调度器根据每个过渡动画任务的动画配置信息创建相应的从原始图像到目标图像之间的过渡动画。
相应地,本发明还提供了一种创建过渡动画的装置,包括:
获取模块,用于接收创建过渡动画任务,获取过渡动画任务的属性信息;
配置模块,用于检测内存的静态内存区中是否正在运行用于创建过渡动画的调度器,若否,则启动所述调度器;若是,则根据获取的所述属性信息,将接收到的创建过渡动画任务挂载在所述调度器上;
创建模块,用于调度器根据获取的每个过渡动画任务的属性信息创建相应的过渡动画;
进度模块,用于完成所有的创建过渡动画任务后停止运行所述调度器。
进一步地,获取模块中所述的过渡动画任务的属性信息包括原始图像、目标图像和动画配置信息。
进一步地,配置模块中所述的调度器包括计时器和配置模块,所述计时器包括计时单元和执行单元,所述配置模块用于根据所述动画配置信息获取过渡动画参数信息,所述计时单元用于根据预设的时间间隔向所述执行单元发送创建指令,所述执行单元用于根据所述创建指令和所述过渡动画参数信息创建过渡动画。
进一步地,获取模块中获取的所述属性信息还包括由接口输入过渡效果信息,所述过渡效果包括淡入淡出效果。
进一步地,创建模块中所述的调度器根据获取的每个过渡动画任务的属性信息创建相应的过渡动画包括:调度器根据每个过渡动画任务的动画配置信息创建相应的从原始图像到目标图像之间的过渡动画。
实施本发明,具有如下有益效果:
(1)利用静态对象在内存中分配静态内存区的特性,当有元素需要做动画时就会运行并启动这个静态内存中的一个计时器,按预先设定的时间间隔执行动画属性到目标的过渡,即创建从原始图像到目标图像的过渡动画。特别地,本发明在创建过渡动画的过程中,如果接收到新的创建过渡动画任务,也就是说,如果再有其他元素也要做动画运动,则会在这个计时器上挂载新的过渡动画任务,而不会创建新的运转动画来占用设备的运算资源。与现有技术相比,本发明实现了在一个计时器上执行多个过渡动画任务,即使有N个元素在做动画也不会创建N个运转动画,基于调度器一个轮子(计时器)带动N个过渡动画,从而有效地减少了CPU及内存空间的占用,提高CPU的利用率。本发明的方法占用内存空间小只增加了200字节,比之市面上最小的开源过渡类库GTween还小了10倍。
(2)本发明的方法可以通过调用现有的过渡类包实现通用的过渡方法如线性过渡和缓动过渡,对于过渡类包中没有的复杂的过渡效果,本发明提供了接口,外部编写相应的算法通过接口传入,从而便于扩展过渡动画的效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本发明实施例提供的方法的流程图;
图2是本发明实施例提供的装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例:
请参见图1,本发明实施例提供了一种创建过渡动画的方法,占用内存小,节约CPU资源,本发明的方法包括以下步骤:
S1、接收应用程序发送的创建过渡动画任务,获取过渡动画任务的属性信息;
本发明中提到的应用程序是指创建过渡动画的应用程序;接收到应用程序发送的创建过渡动画任务后,获取的过渡动画任务的属性信息包括S1中所述的过渡动画任务的属性信息包括原始图像、目标图像和动画配置信息。
动画配置信息里包含动画效果,比如可以是线性匀速过渡,也可以是缓动过渡;还可以包括从原始图像到目标图像之间的过渡图像的时间间隔和过渡图像的生成策略相关的属性。
举例来说,对于一个过渡动画任务,从原始图像到目标图像之间的过渡图像的时间间隔设置为5000ms,时间间隔可以设置为5ms,则从原始图像到目标图像之间需要创建1000个过渡图像。
S2、检测内存的静态内存区中是否正在运行用于创建过渡动画的调度器,若否,则启动所述调度器;若是,则根据获取的所述属性信息,将接收到的创建过渡动画任务挂载在所述调度器上;
S2中所述的调度器包括计时器和配置模块,所述计时器包括计时单元和执行单元,所述配置模块用于根据所述动画配置信息获取过渡动画参数信息,所述计时单元用于根据预设的时间间隔向所述执行单元发送创建指令,所述执行单元用于根据所述创建指令和所述过渡动画参数信息创建过渡动画。
现有技术中,每接收到一个创建过渡动画的任务时,都会新建一个计时器,如果收到N个创建过渡动画的任务,就要创建N个计时器,占用大量的内存空间。
本发明中,仅需建立一个计时器,在该计时器创建过渡动画时,如果接收到新的创建过渡动画任务,将接收到的创建过渡动画任务挂载在所述调度器上,计时器针对接收到的多个过渡动画任务分别创建相应的过渡动画。
S3、调度器根据获取的每个过渡动画任务的属性信息创建相应的过渡动画;
步骤S3具体包括:调度器根据每个过渡动画任务的动画配置信息创建相应的从原始图像到目标图像之间的过渡动画。
具体来说,计时器的计时单元在收到创建过渡动画的任务时,开启计时,根据预设的时间间隔向所述执行单元发送创建指令,直到该任务的创建过渡动画的完成。所述配置模块根据所述动画配置信息获取过渡动画参数信息,并将该过渡动画参数信息发送给执行单元;所述执行单元根据所述创建指令和所述过渡动画参数信息创建过渡动画。
S4、在完成所有的创建过渡动画任务后停止运行所述调度器。
在S4中,每完成一个创建过渡动画任务后向所述应用程序发送报告,在完成所有的创建过渡动画任务后停止运行所述调度器。
作为本发明的一种优选的方案,S1中获取的所述属性信息还包括由接口输入过渡效果信息,所述过渡效果包括淡入淡出效果。
本发明的方法可以通过调用现有的过渡类包实现通用的过渡方法如线性过渡和缓动过渡,但是,对于过渡类包中没有的复杂的过渡效果,本发明提供了接口,需要设置复杂的过渡效果时,比如淡入淡出、弹回效果等,可以预先编写相应的算法,将算法通过接口传入调度器,从而便于扩展过渡动画的效果。
此外,本发明在创建过渡动画时,以链式调用方式实现动画效果。
举例来说,如果实现淡入淡出,链式调用语句如下:
ballTween.delay(3000).fadeOut(500);
对于以缓动效果延时1秒后,执行从目标属性{x:0,alpha:1}过渡到:{x:300,alpha:0},链式调用语句如下:
ballTween.easeOut().from({x:0,alpha:1}).delay(1000).to({x:300,alpha:0},5000)。
相应地,请参见图2,本发明还提供了一种创建过渡动画的装置,包括:
获取模块,用于接收应用程序发送的创建过渡动画任务,获取过渡动画任务的属性信息;
配置模块,用于检测内存的静态内存区中是否正在运行用于创建过渡动画的调度器,若否,则启动所述调度器;若是,则根据获取的所述属性信息,将接收到的创建过渡动画任务挂载在所述调度器上;
创建模块,用于调度器根据获取的每个过渡动画任务的属性信息创建相应的过渡动画;
进度模块,用于完成所有的创建过渡动画任务后停止运行所述调度器。
进一步地,获取模块中所述的过渡动画任务的属性信息包括原始图像、目标图像和动画配置信息。
进一步地,配置模块中所述的调度器包括计时器和配置模块,所述计时器包括计时单元和执行单元,所述配置模块用于根据所述动画配置信息获取过渡动画参数信息,所述计时单元用于根据预设的时间间隔向所述执行单元发送创建指令,所述执行单元用于根据所述创建指令和所述过渡动画参数信息创建过渡动画。
进一步地,获取模块中获取的所述属性信息还包括由接口输入过渡效果信息,所述过渡效果包括淡入淡出效果。
进一步地,创建模块中所述的调度器根据获取的每个过渡动画任务的属性信息创建相应的过渡动画包括:调度器根据每个过渡动画任务的动画配置信息创建相应的从原始图像到目标图像之间的过渡动画。
实施本发明,具有如下有益效果:
(1)本发明利用静态对象在内存中分配静态内存区的特性,当有元素需要做动画时就会运行并启动这个静态内存中的一个计时器,按预先设定的时间间隔执行动画属性到目标的过渡,即创建从原始图像到目标图像的过渡动画。特别地,本发明在创建过渡动画的过程中,如果接收到新的创建过渡动画任务,也就是说,如果再有其他元素也要做动画运动,则会在这个计时器上挂载新的过渡动画任务,而不会创建新的运转动画来占用设备的运算资源。与现有技术相比,本发明实现了在一个计时器上执行多个过渡动画任务,即使有N个元素在做动画也不会创建N个运转动画,基于调度器一个轮子(计时器)带动N个过渡动画,从而有效地减少了CPU及内存空间的占用,占用内存空间小只增加了200字节,比之市面上最小的开源过渡类库GTween还小了10倍。
(2)本发明的方法可以通过调用现有的过渡类包实现通用的过渡方法如线性过渡和缓动过渡,对于过渡类包中没有的复杂的过渡效果,本发明提供了接口,外部编写相应的算法通过接口传入,从而便于扩展过渡动画的效果。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。