当前位置: 首页 > 图文教程 > Flash动画 > ActionScript > Flash as入门(14):用AS实现补间动画

ActionScript
FLASH 3D相册之利用BitmapData类制作
Flash 脚本游戏开发教程 第一课
Flash 脚本游戏开发教程第二课
Flash 脚本游戏开发教程第三课
Flash 脚本游戏开发教程第四课
Flash 脚本游戏开发教程第五课
Flash 脚本游戏开发教程第六课
Flash 脚本游戏开发教程第七课
Flash 脚本游戏开发教程第八课
Flash AS实现的蝌蚪摆尾动画的教程
从基础开始深入学Flash AS3教程(4)(译文)
从基础开始深入学Flash AS3教程(5)(译文)
从基础开始深入Flash AS3教程(2)(译文)
从基础开始深入学Flash AS3教程(3)(译文)
Flash AS3对单个图片进行角色动作化处理
从基础开始深入Flash AS3教程(1)(译文)
Flash教程:if条件语句的用法
Flash AS教程:_visible属性的详细讲解
Flash AS教程:图片环绕旋转效
Flash教程:trace()的使用

ActionScript 中的 Flash as入门(14):用AS实现补间动画


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-01   浏览: 529 ::
收藏到网摘: n/a

本例继续讲解AS的基础知识,今天我们来学习Flash AS入门系列教程第七课:影片剪辑第8节用AS实现补间动画,对Flash的AS编程有兴趣的朋友可以到论坛与作者交流。

用AS实现补间动画

演示效果:

flash mx.transitions.Tween类可以实现类似补间动画的效果。要使用Tween类,首先还是将它导入:
import mx.transitions.Tween;

然后用new Tween()方法即可实现。New Tween()方法格式:
new Tween(要应用补间的MC,要应用补间的MC的属性,缓动效果,属性的初始值,属性的结束值,补间的长度,补间长度的类型)

下面介绍一下new Tween()方法的参数。

要应用补间的MC:这个就是要应用补间的MC罗。

要应用补间的MC的属性:补间动画实际就是用一定的时间改变对象的属性,比如位移就是改变_x或_y属性,还有其它的如_xscal、_alpha等。这里就是指这些属性的名称。

缓动效果:在上一节我们已经介绍了。

属性的初始值:比如要用补间的是_x属性,我们要建立对象从舞台左边移到右边的补间动画,那么_x的初始值就应很小,比如0,10,50等,即对象在舞台左边时的_x值。

属性的结束值:补间结束时属性的值,比如对象移到舞台右边时的_x的值。

补间的长度:可以有两种表示方式:秒或帧,但这里只是一个数值,是用秒还是用帧来计算补间由后面一个参数来决定。

补间长度的类型:决定是用秒还是用帧来计算补间,如果为true则用秒来计算,如果为false则用帧来计算。

下面我们来制作我们的第一个补间动画,让一个小球从舞台的左边移到右边:
画一个球吧,转换为MC,实例名称为:ball_mc.

打开帧动作面板,输入如下代码:

import mx.transitions.Tween;
import mx.transitions.easing.*; //因为在用到缓动效果,所以将缓动类也导入
new Tween(ball_mc, "_x", None.easeNone, 20,500,3,true);

测试影片,小球将从左边(20像数处)移到右边(500像素处),用时3秒。

上面这个效果没有用缓动效果,我们回忆一下上一节介绍的缓动效果,似乎有一个叫Regular的缓动类,它将实现减慢的效果,我们给它调用easeIn方法,即在补间开始时减慢,这样是不是就实现了从慢到快的效果呢?将代码改成下面的:

import mx.transitions.Tween;
import mx.transitions.easing.*;
new Tween(ball_mc, "_x",Regular.easeIn, 20,500,40,false);

测试影片,我们看到小球由慢到快从左边移到右边。在这段代码中,改变了三个参数,一个是缓动效果,一个是补间长度用了40,再一个就长度类型用了false,这样这个补间长度不再是3秒,而是40帧。

onMotionFinished事件:Tween类的onMotionFinished事件在补间动画完成时调用。在后面来练习它的用法。

continueTo() 方法:继续执行补间动画,它以原补间动画属性的结束值作为开始值。这个方法重新指定结束值和补间长度。也就是说在原补间动画的结束点上重新开始新的动画。

利用上面的事件和方法可使动画往返运动。

将代码改为下面的:

import mx.transitions.Tween;
import mx.transitions.easing.*;
vae mytween:Tween = new Tween(ball_mc, "_alpha",Nonse.easeNonse, 0,100,3,true);
mytween. onMotionFinished = function(){
mytween. continueTo(0,3)
}

测试影片,你会看到小球淡入然后又淡出的过程。
这段代码,我们做透明度的补间动画,使透明度用3秒时间从0变为100,当补间结束时,调用onMotionFinished事件代码,用 continueTo(0,3)方法又用3秒时间将透明度由100(刚才补间的结束值)变为0。因为要调用Tween的事件和方法,所以我们声明了一个 Tween类mytween,这一点也与上面的代码不一样。

yoyo()方法:

上面的代码虽然实现了,透明度由0到100,然后又从100回到0的动画,但回到0后,动画就停止了。我们常常需要不停的往返运动,比如闪烁的星星,跳动的心脏等。那么Tween类为我们提供了yoyo()方法,这个方法在补间结束时,将初始值变为结束值,将结束值变为初始值,再次进行补间,如此往返永不停止。

记得一个红星跳动的表情吗?我们现在来制作它:
画一个红星,转换为MC,实例名称为:hx_mc.

帧动作代码:

import mx.transitions.Tween;
import mx.transitions.easing.*;
var mytween:Tween = new Tween(hx_mc, "_xscale",Nonse.easeNonse, 80,100,0.5,true);
mytween.onMotionFinished = function(){
mytween.yoyo()
}

测试影片,我们看到了一个跳动的红星。看到这个效果,我突然发现,如果把红星换成一只蝴蝶,那不就让蝴蝶飞起来了吗?
这个例子应用补间的属性是_xscale.

下面我们来制用一个弹性菜单的练习,完成本节上面的动画:

首先来做弹性菜单,做4个MC,比较简单,画一个黄色的矩形,如果你高兴,当然可以用其它颜色,在矩形上面放一个静态文本,内容分别是:“加速滚动的球”,“闪烁的星”,“跳动的红心”,“飞动的蝴蝶”。

有两点要注意:

1.将字打散(两次),因为文本框在放大时会保持长宽比例,而我们弹出菜单时只需要改变高度,所以必须将文本打散。
2.因为菜单是向下弹开(增加高度),因此,元件必须上对齐。即上边与十字对齐。
3.矩形的高度为20,如果你的高度不是20,那么下面的代码就要作相应改变。
4个元件做好后,将它们拖到舞台上,放好。实例名称为: cd1,cd2,cd3,cd4

然后打开帧动作面板,输入如下代码:

import mx.transitions.Tween;
import mx.transitions.easing.*;
var cdtween:Tween;
function tc(cd) {
cdtween = new Tween(cd, "_height",Bounce.easeOut, 20,60,2,true);
}
cd1.onRollOver = function(){
tc(this);
}
cd1.onRollOut = function(){
cdtween.continueTo(20,1);
}
cd2.onRollOver = function(){
tc(this);
}
cd2.onRollOut = function(){
cdtween.continueTo(20,1);
}
cd3.onRollOver = function(){
tc(this);
}
cd3.onRollOut = function(){
cdtween.continueTo(20,1);
}
cd4.onRollOver = function(){
tc(this);
}
cd4.onRollOut = function(){
cdtween.continueTo(20,1);
}

测试影片,一个弹性菜单就做好了。

以前我们说过,如果要多次使用的代码,最好做成函数,弹出菜单的代码在4个菜单项上都要调用,所以我们将它做成函数tc.这个函数,用Tween类使菜单 MC,的高度在2秒内由20变成60,达到弹出的效果,缓动则菜用了Bounce.easeOut,在菜单展开后产生一个弹跳的效果。在函数外声明 Tween对象:var cdtween:Tween;是为了在鼠标移出菜单时能够调用它。

接下来的代码是,在鼠标移动菜单上时,调用tc 使菜单弹出。在鼠标移出菜单时,调用Tween类的continueTo()方法,使菜单收回去。

接下来用上面介绍的内容,做4个MC,分别是,一个加速运动的小球,一个闪烁的星,一个跳动的红心,一个飞动的蝴蝶。在库中点右键,打开连接面板,为这4个MC取标识名:ballmc(小球),xingmc(星),hxmc(红心),hdmc(蝴蝶)。

回到主场景,打开帧动作面板,接着上面的代码,在每个菜单项上,添加点击加载相应mc的命令。

cd1.onRelease = function(){
attachMovie("ballmc","ball_mc",1)
ball_mc._y =200;
}
cd2.onRelease = function(){
attachMovie("hxmc","hx_mc",1)
hx_mc._y = 200;
hx_mc._x =260;
}
cd3.onRelease = function(){
attachMovie("xingmc","xing_mc",1)
xing_mc._x = 260;
xing_mc._y =200;
}
cd4.onRelease = function(){
attachMovie("hdmc","hd_mc",1)
hd_mc._x = 260;
hd_mc._y =200;
}

OK,试试吧。