Flash基础理论课 第八章 缓动与弹性运动Ⅰ

返回“Flash基础理论课 - 目录”

很难相信我们居然用了七章才把基础的内容介绍完,现在进入第八章,这里是高级内容的起点。从这里开始内容也开始变得越来越有趣了,前面的章节都是些常用的概念与技术。从今天开始,每章只着重介绍一两种特殊的运动。

本章将介绍缓动运动(成比例速度)与弹性运动(成比例加速度),不用担心它们只是两个名词术语,这章可以快速地略读。我会给出很多例子程序,可以使大家充分了解这项技术的强大。

成比例运动

缓动(ease)与弹性(spring)联系紧密。这两种方法都是将对象(通常指 Sprite或MovieClip)从某一点移动到目标点。使用缓动运动(Easing),如同让影片滑动到目标并停止。使用弹性运动(Springing),会产生向前或向后的反弹,最终停止在目标点位。两种方法具有一些共同点:

■需要一个目标点;

■确定到目标点的距离;

■成比例地将影片移动到目标点——距离越远,移动速度越快。

缓动运动(easing)与弹性运动(springing)的不同之处在于移动的比例。缓动运动时,速度与距离成正比,离目标越远,物体运动速度越快。当物体与目标点非常非常接近时,就几乎不动了。

弹性运动时,加速度与距离成正比。如果物体与目标离得很远,再用上加速度,会使移动速度非常快。当物体接近目标时,加速度会减小,但依然存在!物体会飞过目标点,随后再由反向加速度将它拉回来。最终,用摩擦力使其静止。

下面,我们分别看一下这两种方法,先从缓动(easing)开始。

缓动(Easing)

首先说明缓动的种类不只有一种。在 Flash IDE 中,制作补间动画时,我们就可以看到 “缓动输入”(ease in)和“缓动输出”(ease out)。下面所讨论的缓动类型与运动补间的“缓动输出”相似。在本章后面的“高级缓动”一节,将会给大家一个网站连接,在那里可以学习制作所有缓动的效果。

简单缓动

简单缓动是个非常基础概念,就是将一个物体移到别处去。创建这个“运动效果”时,希望物体能在几帧内慢慢移动到某一点。我们可以求出两点之间的夹角,然后设置速度,再使用三角学计算出 vx和vy,然后让物体运动。每一帧都判断一下物体与目标点的距离,如果到达了目标则停止。这种运动还需要一定条件的约束才能实现,但如果要让物体运动得很自然,显然这种方法是行不通的。

问题在于物体沿着固定的速度和方向运动,到达目标点后,立即停止。这种方法,用于表现物体撞墙的情景,也许比较合适。但是物体移动到目标点的过程,就像是某个人明确地知道他的目的地,然后向着目标有计划地前进,起初运动的速度很快,而临近目标点时,速度就开始慢下来了。换句话讲,它的速度向量与目标点的距离是成比例的。

先来举个例子。比如说我们开车回家,当离家还有几千米的距离时,要全速前进,当离开马路开进小区时速度就要稍微慢一点儿。当还差两座楼时就要更慢一点儿。在进入车库时,速度也许只有几迈。当进入停车位时速度还要更慢些,在还有几英尺的时候,速度几乎为零。

如果大家注意观察就会发现,这种行为就像关门、推抽屉一样。开始的速度很快,然后逐渐慢下来。

在我们使用缓动使物体归位时,运动显得很自然。简单的缓动运动实现起来也非常简单,比求出夹角,计算 vx,vy 还要简单。下面是缓动的实现策略:

1. 确定一个数字作为运动比例系数,这是个小于 1的分数;

2. 确定目标点;

3. 计算物体与目标点的距离;

4. 用距离乘以比例系数,得出速度向量;

5.将速度向量加到当前物体坐标上;

6. 重复 3到5 步。图 8-1 解释了这一过程。


图8-1 简单缓动

时间: 2024-09-17 04:12:53

Flash基础理论课 第八章 缓动与弹性运动Ⅰ的相关文章

Flash基础理论课 第八章 缓动与弹性运动Ⅲ

返回"Flash基础理论课 - 目录" 弹簧链 下面我们将几个弹性小球串联起来.在介绍缓动一节时,我们简单地讨论了鼠标跟随的概念,意思是说一个物体跟随鼠标,另一个物体再跟随这个物体,依此类推.当时没有给大家举例子,是因为这个效果现在看来有些逊色.但是,当我们在弹性运动中使用这个概念时,效果就截然不同了. 本程序的设计思想:创建三个小球,名为ball0,ball1,ball2.第一个小球,ball0的动作与上面例子中的效果是相同的.ball1向ball0 运动,ball2向ball1 运

Flash基础理论课 第八章 缓动与弹性运动Ⅱ

返回"Flash基础理论课 - 目录" 弹性运动 一直以来,我都认为弹性运动将是ActionScript 动画中最强大和最有用的物理学概念.几乎所有的物体都可以使用弹性运动.下面就来看看什么是弹性运动以及在Flash 编程中的应用. 如同本章开始时所提到的,弹性的加速度与物体到目标点的距离成正比例.想象一下现实中弹簧的性质.把一个小球拴在橡皮圈一头,再将另一头系在一个固定的地方.当小球悬在半空时,在没有施加外力的情况下,小球就处在目标点的位置上.再将小球微微拉动,松手后橡皮圈会对其施加

Flash基础理论课

Flash基础理论课 第一章 基础动画概念 Flash基础理论课 第二章 ActionScript 3.0 动画基础Ⅰ Flash基础理论课 第二章 ActionScript 3.0 动画基础Ⅱ Flash基础理论课 第三章 三角学应用Ⅰ Flash基础理论课 第三章 三角学应用Ⅱ Flash基础理论课 第四章 渲染技术Ⅰ Flash基础理论课 第四章 渲染技术Ⅱ Flash基础理论课 第四章 渲染技术Ⅲ Flash基础理论课 第五章 速度与加速度Ⅰ Flash基础理论课 第五章 速度与加速度Ⅱ

Flash基础理论课 第十五章 3D基础 Ⅲ

返回"Flash基础理论课 - 目录" 缓动与弹性运动 在3D中的缓动与弹性运动不会比2D中的难多少(第八章的课题).我们只需要为z轴再加入一至两个变量. 缓动 对于缓动的介绍不算很多.在2D中,我们用tx和ty最为目标点.现在只需要再在z轴上加入tz.每帧计算物体每个轴到目标点的距离,并移动一段距离. 让我们来看一个简单的例子,让物体缓动运动到随机的目标点,到达该点后,再选出另一个目标并让物体移动过去.注意后面两个例子,我们又回到了 Ball3D 这个类上.以下是代码(可以在Easi

Flash基础理论课 第十五章 3D基础Ⅰ

返回"Flash基础理论课 - 目录" 前面我们做的一切都是二维的(有时只有一维),但是已经可以做出非常酷的东东了.现在,将它们带入到下一个等级. 创建 3D 图形总是那么另人兴奋.新加入的这个维度似乎将物体真正地带入到了生活中.如何在Flash 中实现 3D 在无数的书籍和教学软件中都有介绍.但是我不打算跳过这些内容,我们会很快地将所有基础的知识讲完.随后,将前面章节中讨论的运动效果放到三维空间中.说得详细些,将给大家介绍速度,加速度,摩擦力,反弹,屏幕环绕,缓动,弹性运动,坐标旋转

[Flash基础理论课10] 缓动效果[Tween类]

返回"Flash基础理论课 - 目录" Tween类,在推出FlashMX时就出现了,允许您轻松地在舞台上移动.缩放和淡入淡出影片剪辑.实质是用于添加AS过渡动画,使用非常的方便. Tween类的使用: Tween类算是一个外部类,所以使用前应先导入: import mx.transitions.Tween; Tween类中easing方法的导入:用easing.*打开整个包,所有方法也都被载入了 import mx.transitions.easing.*; Tween类构造函数中各

Flash基础理论课 第十八章 矩阵数学

返回"Flash基础理论课 - 目录" 本章我们不去介绍一些新的运动.物理学或渲染图形的方法.我要给大家介绍的是矩阵(Matrix),它给我们提供了一个新的可选方案. 矩阵在3D 系统中 3D点的旋转,缩放以及平移(运动)中使用得非常频繁.在各种 2D 图形的变换上也很常用.您也许可以回想到 beginGradientFill 方法就是使用矩阵来设置位置,大小以及旋转比例的. 本章大家将看到如何创建一个3D矩阵系统,用以操作 3D的影片并且可以看到一些 Flash中内置的矩阵.我很庆幸

[Flash基础理论课15] 绚酷鼠标[目标移动]

返回"Flash基础理论课 - 目录" 在学习之前,我们先复习一下前面(功能代码07<百变图>)曾用过的 目标移动公式: mc.当前坐标 += (mc.目标坐标 - mc.当前坐标) * A 缓动常量( 0 < A < 1 ) 例如: 舞台上有一个影片剪辑,实例名为 mc,使其移动到 x=400, y=300 的位置 mc.Tox = 400; mc.Toy = 300; mc.onEnterFrame = function() { this._x += (th

Flash基础理论课 第十一章 撞球物理Ⅰ

返回"Flash基础理论课 - 目录" 我们都希望技术性的书籍,可以潜入深,由简单到复杂.本章内容的复杂度达到了顶点.并不是说接下来的章节会越来越容易,但是希望大家在学习本章内容时不要偷工减料.我会带大家一步步地学习本章的概念,如果到现在为止大家都能很好地跟上我的步伐,那就再好不过了. 本章我们要关注动量:两个物体发生碰撞后动量会发生什么样的变化,动量的守恒,以及如何在ActionScript中应用动量. 在本章的例子中使用的对象,都本这简单直接的原则,这个学科通常是指"撞球