目录 其他材料 |
实例应用 在第一部分的最后,我们将使用前面介绍的表达式基础部分的知识来完成一个简单的小例子。我们将重新使用轮胎的例子,使用移动属性来控制图层的旋转属性。 首先,让我们整理一下制作思路,我们要给图层的旋转属性加上表达式,并在表达式的最后以一个标量结束,所以首先要给旋转参数加上一个表达式。 接下来,我们需要给图层的位置属性设置关键帧,以为位置属性的变化将会驱动旋转属性的变化,在我们的例子中,我们仅仅需要轮胎在X 轴上移动,所以我们只需要: position[0] 真实的物理世界告诉我们当轮胎移动一个周长的距离时,它将完成一个周期(360)的旋转,在开始时我们会为设置计算公式而犯愁,还需要知道,轮胎的尺寸会影响到在一个旋转周期内其移动的距离,所以我们需要了解轮胎的尺寸,图层的宽度。 假如轮胎的尺寸与图层的尺寸相差无几(在轮胎的周围没有空白的区域),我们可以使用图层宽度来描述轮胎的直径: width; 但是我们不能直接使用图层宽度,我们需要使用图层宽度来计算出轮胎的周长,利用基本的几何学公式我们就可以计算出轮胎的周长,Javascript为我们提供了一个精确的PI值,所以我们就可以这样来计算轮胎的周长: circumference=width*Math.PI; 如果轮胎的宽度是100个像素,他的周长将会是314个像素,但是如果我们改变图层缩放属性呢,再使用图层的宽度来计算轮胎的周长所得到的结果就不会准确,为了得到更准确的计算结果,我们要利用图层X轴向的缩放属性来控制轮胎的周长: circumference=width*( scale[0]/100)*Math.PI; 我们将图层的X轴缩放属性(scale[0])除以100是因为缩放属性的返回值是百分比, 接下来我们就需要定义图层在X轴向移动的变量,在我们的例子中我们要使图层从X轴的零点开始移动,所以我们使用下面的表达式: distance=position[0]; 最后我们写出核心表达式: (distance/circumference)*360; 该表达式的含义前面已经介绍过,这里就不详细说明了,综合起来,我们需要给旋转属性赋予这样的表达式: circumference=width*( scale[0]/100)*Math.PI; distance=position[0]; (distance/circumference)*360 这时再观看动画,会看到轮胎的移动与旋转已经非常的自然了,丝毫没有滑动的痕迹,还是那句话我们可以使用手动设置关键帧来实现同样的效果,但是如果图层作加速减速运动时,表达式的优势更是体现的淋漓尽致。 可以将这种方法应用到单独的文字动画中,也可以应用到非正常运动的物体中,得到真实的效果。 |
所有内容版权归JJ Gifford.所有,翻译权归CG频道所有,违者必纠。