当前位置: BOLT界面引擎 > 知识库文章 > 引擎动画等级说明

引擎动画等级说明

作者:李亚星 2013-01-11

引擎里面支持多种动画,但是考虑到不同产品、不同系统以及不同环境对性能的要求不同,引入了动画级别的概念,可以指定每个动画属于什么级别,以及当前的全局动画执行级别,从而确定哪些动画是可以执行的,哪些动画是不需要执行的

 

动画级别的两个概念:

l  动画定义级别

每个Animation动画都有一个定义级别,取值范围从1-4或者-1,其中-1表示该动画不受执行级别影响,也即所有情况下均可执行

 

l  动画执行级别

引擎全局只有一个执行级别,所有定义级别高于执行级别的动画,在执行时候都只会执行动画的第一帧和最后一帧(如果动画本身指定了loop=1则除外),也就相当于不执行该动画了;小于等于执行级别的动画,可以正常执行

全局执行级别默认为4,这样所有动画都可以正常播放;使用者可以动态修改执行级别,一般取值范围是0-4,如果取值0,那么除了-1级别的动画外,所有动画都不会执行

 

动画级别的选取

一般来说,一个动画的级别越高,说明这个动画运行时就会越耗性能,比如引擎里面的几个3D动画默认都是4级别;对于自定义动画,开发者就需要有一个自己的大概衡量标准,既可以从理论分析(比如涉及到超大图片的变换处理等耗时操作),也可以从实际出发,测试一个相对时间,然后确立一个合适的动画级别。

 

关于全局的执行级别,这个一般都是根据软件所在的系统和环境来决定的,最典型的情况是,程序安装包在安装时候,通过读取系统信息或者运行一些测试数据,来推测当前系统应该使用的最合适的执行级别,对于性能差的机器,这个级别就可以设置的非常低,甚至完全关闭;对于性能好的机器,那自然就开启所有动画,以取得最好的产品体验。

 

如何修改动画级别:

l  对于动画定义级别

1.         可以调用动画对象的SetNeedLevelGetNextLevel来设置和查询相应的定义级别

2.         可以在动画模板里面配置<needlevel>属性,来设置定义级别

 

l  对于动画执行级别

调用全局的AnimationFactorySetAnimationLevelGetAnimationLevel来设置和查询相应的定义级别

 

需要注意的是,修改全局的执行级别,对于当前已经创建的动画无效,也就是一个在一个动画创建出来以后,再修改全局执行级别,那么这个动画不再受影响了。

 

引擎里动画的默认定义级别:

PosChangeAnimation

2

AlphaChangeAnimation

1

SeqImageAnimation

-1

MaskChangeAnimation

4

TurnObjectAnimation

4

AngleChangeAnimation

4

自定义Animation(XMLAnimation)

4

 

 

关于序列帧动画

由于序列帧动画的特殊性,引擎默认设置了-1的定义级别,也即该动画默认不受执行级别的影响,之所以这么考虑,是因为序列帧动画总是一帧帧的播放,中间每一帧可能都有展现的意义(并非像其它动画那样,只是动态生成的中间结果),如果序列帧动画被关闭,那么就会出现下面的现象:在播放完第一帧以后,直接就跳到了最后一帧,体验很差。

 

当然产品也可以修改序列帧动画的定义级别,如果需要的话

 

注意事项:

1.         如果一个动画指定了loop,那么这个动画就不受执行级别的影响了,不管它的定义级别是多少

2.         自定义动画和内置动画的执行级别都可以修改

3.         修改全局的执行级别,对于当前已经创建的动画无效,所以尽量在初始化引擎后,立即设置需要的动画级别

4.         执行级别的设定可能依赖环境和操作系统,这些很大程序上取决于开发者的经验和实际数据

 

迅雷公司 版权所有 Copyright 2003-2010 Thunder Inc.All Rights Reserved. 意见反馈:xl7doc@xunlei.com