百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

缓动之线性补间 线性缓冲区法的优点

yuyutoo 2024-10-21 12:06 3 浏览 0 评论

如果需要从A点移动到B点,两点之间的最短路径是直线。从数学上来说,线性变换是最简单的。这种补间具有恒定的速度,没有加速度。在F1ash中,缓动为0的时间轴补间就是线性补间。如果画出线性补间随时间变化的图像,如图6-1所示,它将是一条直线。

线性补间

线性补间的位置随时间变化

本文中所有的补间图像都经过了标准化处理。也就是说,位置和时间轴的取值范围都在0-1之间。当然,在真实世界中,位置和时间的范围有很多不同的值。例如,一个补间可以在20帧内移动100像素。如果要绘制这个运动的图像,位置轴应该在0-100之间,而时间轴的范围是0-20。当然,可以很容易地缩放原始的0-1之间的标准图像以匹配新的取值范围。只需要水平坐标乘以20,垂直坐标乘以100即可。

图像的表达式非常简单:

p(t) = t

这就是在高中数学课本中学到的最基本的y=x直线表达式。这条直线的斜率是1,如果时间为0.5,那么位置也是0.5。但这是范围为0-1时的标准化方程。如果考虑前面的那个例子,位置改变了100,持续时间为20,那么直线的斜率就不同了:

斜率 = 高度 / 宽度

= 位置变化/持续时间

= 100像素/20帧

= 5像素/帧

在本例中,斜率是5像素。直线的斜率正是运动的速度。如果另一个补间在20帧内移动了120像素,那么速度就是每帧6像素。它比前一个补间移动更快,同时它的直线更陡。

给定位置的变化和持续时间,可以使用线性补间的标淮方程来生成这种结果。我们知道在线性补间中速度是恒定的,即斜率是常量。于是,将时间乘以速度,就可以得到补间在指定时间所处的位置:

p(t) = t * v

我们知道速度等于位置随时间的改变,因此可以用c除以d来代替v。设c为位置的改变,d为持续时间,则:

v = c/d

p(t) = t * v

= t * (c/d)

当然,补间还有一个起始位置。目前将它假设为0。将这个起始位置加入到方程中,只需要将初始位置b加到方程中:

p(t) = t * (c/d) + b

根据这个方程写出的线性补间函数的代码如下:

public static function linearTween(t:Number, b:Number, c:Number, d:Number):Number{
 return c * t / d + b; 
}

4个参数分别表示时间、起始位置、位置改变和持续时间,函数返回相应的位置。

实现这个补间效果的类文件在Flash和Flex中都存在,但被组织到不同的包中。在Flash中位于fl.transitions.easing包中,实现线性补间的类文件为None.as。而在Flex中则位于mx.effects.easing包中,实现的类文件为Linear.as。

下面以Flash为例说明一下线性补间的使用。要想应用补间效果,首先必须实例化位于fl.transitions包中的Tween类。Tween类的工作方式是:创建它的一个实例,向它传递一个对象的应用和这个对象的一个属性名称、一个补间方法、补间的初始位置和结束位置以及持续的时间。Tween的构造方法为:

new Tween (object,property,easingFunction,begin,finish,duration,useSeconds)

参数中的object可以是任意至少拥有一个数字属性的对象。property参数是一个字符,即要补间的属性的名称。如要改变一个Sprite 的x属性,这个参数就是“x”(包括引号)。 easingFunction参数是fl.transitions.easing包中定义好的某个缓动类的一个方法。begin和finish都是数值。当补间开始的时候,对象要补间的属性将被设置为begin这个值。补间结束后,该属性就会变成finish的值。 默认情况下,duration参数给出的是补间运行的时间,可以是帧数或者是秒数,这取决于最后一个参数useSeconds。useSeconds是一个布尔值。默认值是false,表示补间会把 duration的值当作帧数使用。但是如果把它设为true,duration的值就会被当作秒数来计算。

下面举一个简单的示例,源代码如下:

package{ 
 import fl.transitions.Tween; 
 import fl.transitions.easing.None; 
 import flash.display.Sprite; 
 import flash.display.StageAlign; 
 import flash.display.StageScaleMode; 
 
 public class FlashTween extends Sprite{ 
 private var tween:Tween; 
 private var sprite:Sprite; 
 
 public function FlashTween(){ 
 stage.align = StageAlign.TOP_LEFT; 
 stage.scaleMode = StageScaleMode.NO_SCALE; 
 sprite = new Sprite(); 
 sprite.graphics.beginFill(0xFF0000); 
 sprite.graphics.drawRect(-50,-25,100,50); 
 sprite.graphics.endFill(); 
 sprite.x = 100; 
 sprite.y = 100; 
 addChild(sprite); 
 tween = new Tween(sprite,"x",None.easeIn,100,500,1,true); 
 } 
 } 
}

代码一运行补间就开始工作,绘制的红色矩形Sprite在1秒钟内从x坐标100的位置移动到x为500的位置。

相关推荐

Mysql和Oracle实现序列自增(oracle创建序列的sql)

Mysql和Oracle实现序列自增/*ORACLE设置自增序列oracle本身不支持如mysql的AUTO_INCREMENT自增方式,我们可以用序列加触发器的形式实现,假如有一个表T_WORKM...

关于Oracle数据库12c 新特性总结(oracle数据库19c与12c)

概述今天主要简单介绍一下Oracle12c的一些新特性,仅供参考。参考:http://docs.oracle.com/database/121/NEWFT/chapter12102.htm#NEWFT...

MySQL CREATE TABLE 简单设计模板交流

推荐用MySQL8.0(2018/4/19发布,开发者说同比5.7快2倍)或同类型以上版本....

mysql学习9:创建数据库(mysql5.5创建数据库)

前言:我也是在学习过程中,不对的地方请谅解showdatabases;#查看数据库表createdatabasename...

MySQL面试题-CREATE TABLE AS 与CREATE TABLE LIKE的区别

执行"CREATETABLE新表ASSELECT*FROM原表;"后,新表与原表的字段一致,但主键、索引不会复制到新表,会把原表的表记录复制到新表。...

Nike Dunk High Volt 和 Bright Spruce 预计将于 12 月推出

在街上看到的PandaDunk的超载可能让一些球鞋迷们望而却步,但Dunk的浪潮仍然强劲,看不到尽头。我们看到的很多版本都是为女性和儿童制作的,这种新配色为后者引入了一种令人耳目一新的新选择,而...

美国多功能舰载雷达及美国海军舰载多功能雷达系统技术介绍

多功能雷达AN/SPY-1的特性和技术能力,该雷达已经在美国海军服役了30多年,其修改-AN/SPY-1A、AN/SPY-1B(V)、AN/SPY-1D、AN/SPY-1D(V),以及雷神...

汽车音响怎么玩,安装技术知识(汽车音响怎么玩,安装技术知识视频)

全面分析汽车音响使用或安装技术常识一:主机是大多数人最熟习的音响器材,有关主机的各种性能及规格,也是耳熟能详的事,以下是一些在使用或安装时,比较需要注意的事项:LOUDNESS:几年前的主机,此按...

【推荐】ProAc Response系列扬声器逐个看

有考牌(公认好声音)扬声器之称ProAcTablette小音箱,相信不少音响发烧友都曾经,或者现在依然持有,正当大家逐渐掌握Tablette的摆位设定与器材配搭之后,下一步就会考虑升级至表现更全...

#本站首晒# 漂洋过海来看你 — BLACK&DECKER 百得 BDH2000L无绳吸尘器 开箱

作者:初吻给了烟sco混迹张大妈时日不短了,手没少剁。家里有了汪星人,吸尘器使用频率相当高,偶尔零星打扫用卧式的实在麻烦(汪星人:你这分明是找借口,我掉毛是满屋子都有,铲屎君都是用卧式满屋子吸的,你...

专题|一个品牌一件产品(英国篇)之Quested(罗杰之声)

Quested(罗杰之声)代表产品:Q212FS品牌介绍Quested(罗杰之声)是录音监听领域的传奇品牌,由英国录音师RogerQuested于1985年创立。在成立Quested之前,Roger...

常用半导体中英对照表(建议收藏)(半导体英文术语)

作为一个源自国外的技术,半导体产业涉及许多英文术语。加之从业者很多都有海外经历或习惯于用英文表达相关技术和工艺节点,这就导致许多英文术语翻译成中文后,仍有不少人照应不上或不知如何翻译。为此,我们整理了...

Fyne Audio F502SP 2.5音路低音反射式落地音箱评测

FyneAudio的F500系列,有新成员了!不过,新成员不是新的款式,却是根据原有款式提出特别版。特别版产品在原有型号后标注了SP字样,意思是SpecialProduction。Fyne一共推出...

有哪些免费的内存数据库(In-Memory Database)

以下是一些常见的免费的内存数据库:1.Redis:Redis是一个开源的内存数据库,它支持多种数据结构,如字符串、哈希表、列表、集合和有序集合。Redis提供了快速的读写操作,并且支持持久化数据到磁...

RazorSQL Mac版(SQL数据库查询工具)

RazorSQLMac特别版是一款看似简单实则功能非常出色的SQL数据库查询、编辑、浏览和管理工具。RazorSQLformac特别版可以帮你管理多个数据库,支持主流的30多种数据库,包括Ca...

取消回复欢迎 发表评论: