动画UI 元素运动规律的描述
原则上(shàng),标准的 UI 动画时(shí)长是在大约 200ms 到 500ms 之间。小于 100ms 的动画是瞬时(shí)的,不会被用户注意到,但是如果大于 1000ms(1s),则(zé)会让人感觉迟钝,给人(rén)一种拖泥带水的感觉。
03
属性(xìng)和值
属性是(shì)对(duì) UI 元素运动规律的描述。为了使两(liǎng)个关键帧之间能够产生重庆动(dòng)画制作,我们必须为它们设置不(bú)同的值。
在上面的例子中,我设置(zhì)的(de)动画属性是元素所在位置的 X 坐标,关键(jiàn)帧 1 的值是 0,关键帧 2 的值是 500 。如(rú)果两个关键帧的值完(wán)全相同,是(shì)不可能生(shēng)成动画的。
我在下面列出了一些可以设置动画的常见属性(xìng)。
当(dāng)然,在现代(dài)的(de) UI 设计软件里,你可以修改任何(hé)可(kě)编辑的属性,使(shǐ)元(yuán)素动起来。
颜(yán)色、透明度
尺寸
X 坐标、Y 坐(zuò)标
旋转(zhuǎn)角度(dù)
宽(kuān)度、高度
现在我们知道了什么是(shì)关(guān)键帧、属(shǔ)性以及什么(me)是(shì)值,那么(me)就可以来定义(yì)插值了。
插值是(shì)指两个关键帧之间(jiān),某一属性值的动(dòng)态变化。
这么说有些拗口,让我(wǒ)们用例子来分解它。要使蓝色正方形从左向右移动,我们需要在 100ms 的(de)时间内,重庆动画(huà)公司将正方形的 X 坐标属性值从 0(关键帧1,0ms)增加到 500(关键帧2,100ms)。
当定义两个关(guān)键帧(zhēn)之间的动画时,我们只需指(zhǐ)定要更改的属性(xìng)值。
在这(zhè)个(gè)例子中,由于位置属性的 X 坐标值是唯一改变的值(zhí),因此不需要为正方(fāng)形的其他属性指定值,因为这两个关键帧的其它(tā)属(shǔ)性是相(xiàng)同的。
04缓动
当元素动起来(lái)之后,你会发现它看(kàn)起来很死板,并不(bú)生动(dòng)。这是因为我们(men)没有(yǒu)加入缓动(dòng)函数。缓动(dòng)函数可以为关键帧之间变化的属(shǔ)性值设置加速度或减速度(dù)。
Source
换(huàn)句话说,它允许我们在动画的(de)持续时间(jiān)内(nèi)改变元素的运(yùn)动速度。注意,你(nǐ)可以为关(guān)键帧之(zhī)间的每一种属性变化赋予不同的缓动函数。
如果没有缓动函数(shù),动画就会匀速(加速度为 0)运动(dòng),这不(bú)符合(hé)现(xiàn)实生活(huó)中的(de)物(wù)体运动规律。
现实中的物体往往会(huì)受(shòu)到重(chóng)力、惯性(xìng)和阻力的影响。为(wéi)了使动画更加真实,我们需要模拟出这些因素是如何影响缓动(dòng)函数的。
缓动函数(shù)可(kě)以表(biǎo)示为 “三次(cì)贝(bèi)塞尔函数”,它使(shǐ)用两组坐标来表示初始和(hé)结束状态,即(x1、y1、x2、y2)。三次贝塞尔曲线的默认线性运动函数是(0.0,0.0,1.0,1.0)。
幸运的是,我们不需要从头(tóu)开始创建这些缓动函数,因为如今所有的重庆3D动画公司(sī)的(de)软件都包含(hán)以下缓动(dòng)函数预设。
1. 线(xiàn)性匀(yún)速
不受物理(lǐ)力(重量、惯性和阻(zǔ)力)影响的对象(xiàng)可以设置没有加速度(dù)的线性动画(huà)。
匀(yún)速(sù)曲线使用较(jiào)少,但在更改对象状态(如颜(yán)色、透明度)时非常有效,因为这些属性的变化不需要改变对象(xiàng)的位置或比例。
2. 淡入或加速(sù)曲(qǔ)线
淡入函数会从初始关键帧开始影响属性值。当物(wù)体全速出现时可以(yǐ)使(shǐ)用该函数,例如 toast 提示。想象一辆汽车驶出时,它的(de)速(sù)度从(cóng) 0 开始(shǐ)逐渐增加,然后在驶出帧(zhēn)达到峰值(zhí)。
加(jiā)速曲(qǔ)线 图片来自Taras
3. 淡(dàn)出或(huò)减速曲线
淡出函数会(huì)在到达(dá)结束关键帧时(shí)影(yǐng)响属性值。当物体全速(sù)进入(rù)时,应(yīng)使用该函(hán)数。例如,单(dān)击汉堡包导航图标并(bìng)使菜单进入帧时。想象(xiàng)一个雪(xuě)橇从山顶滑到山底,它的起始速度为峰值,并在进入帧时(shí)减到(dào)零(líng)。
减速曲线(xiàn) 图片来自Taras
4. 淡入淡出或标准(zhǔn)曲线
淡入淡出函数(shù)会(huì)在初始(shǐ)关(guān)键帧到结束(shù)关(guān)键帧之间影响属性值。当对象从帧的一个部分(fèn)移动(dòng)到另一(yī)个部分,但在整个过程中(zhōng)始终保持(chí)在帧中(zhōng)时,重庆影视制作公司应使用此功能,例(lì)如,点击(jī)卡片后扩展填充整(zhěng)个屏幕。想象一个钟摆,它的速度从峰值(zhí)开始,缓慢减速(sù)到 0 ,然后再次加速。
当你拿捏不准的(de)时(shí)候,大可(kě)以放心使(shǐ)用(yòng)这个函数,这(zhè)就是为什么它会被(bèi)称为标(biāo)准曲线。
也有更复杂的(de)缓动函数,像是 “渐隐(yǐn)为黑(hēi)色、弹性、反(fǎn)弹” 等,这些用的都比较(jiào)少。你(nǐ)可以在 easings.net 上找到一些其他常(cháng)用(yòng)的函数。那(nà)么更复杂的(de)动效是什么(me)样子的呢?不同于在两个(gè)关键帧之间设置单(dān)个特性(xìng)的动效,你也可(kě)以使用跨多个关键帧的不同的缓动曲(qǔ)线来设置具有多个特性的动(dòng)效(xiào) 。
Uplabs 上使(shǐ)用了(le)我们(men)刚(gāng)才所学的函数原(yuán)则的复杂动效示例
需要强调的是,每(měi)个插值都可以在动效过程中的不(bú)同点开(kāi)始和结束 。举个例子,如果你需要为你的 UI 元素的 X 坐标设(shè)置(zhì)超过 800ms 的插值,同时还要为它的尺(chǐ)寸设(shè)置插值,那么起始点和(hé)结束点可以设(shè)置(zhì)在(zài)这 800ms 期间(jiān)的任意位置(zhì)。
这意(yì)味着两(liǎng)个关键帧之(zhī)间(jiān)动画(huà)的持续时间由元素属性的最长(zhǎng)插值决定 。因(yīn)此,如果(guǒ)要(yào)为多个属性设(shè)置(zhì)动效(xiào),则可以在动效期间的任(rèn)何点开(kāi)始(shǐ)和结束该属性(xìng),重庆动画公(gōng)司以创建各种效果(guǒ),例如交错。这就是所(suǒ)谓的编排(choreography),是(shì)一个有点高(gāo)级(jí)的主题,我们继(jì)续说。
不过(guò),我建议(yì)初学者尽量保持简(jiǎn)单。你往往很少需要为关键帧(zhēn)之间的每个(gè)属性都设(shè)置动画。当你对所有(yǒu)东西进(jìn)行插(chā)值时,用户的眼睛也会被动(dòng)效搞得晕(yūn)头转向。

下一篇(piān):PR不是动画制作软件(jiàn),却有(yǒu)强大运动生成(chéng)功(gōng)能(néng)