先说明一下Tween类:
我们看一下Tween类的构造函数:
Tween(obj:Object, prop:String, func:Function, begin:Number,finish:Number, duration:Number, useSeconds:Boolean = false)
这些参数依次代表着:
1.要制作动画的对象
2.要改变对象的属性,注意这个值为字符串
3.要用何种方式去用程序补间上诉属性的动画
4.对象属性的初始值(程序开始补间的初始值)
5.对象属性的终端值(程序要补间到的最终值)
6.这段补间动画持续的时间
7.设定动画持续的时间是按帧计算(useSeconds = false),还是按秒计算(useSeconds =true),默认值是使用帧数计算
Tween对象一旦初始化,动画就开始了。Tween类补间的动画可以触发6种事件。最常用的因该是TweenEvent.MOTION_FINISH。动画已结束,就会触发这个事件。
下面是AS3.0的源代码:
import flash.display.Sprite;
import fl.transitions.Tween;
import fl.transitions.easing.Elastic;
import fl.transitions.TweenEvent;
var mySprite:MovieClip = new Symbol();
this.addChild(mySprite);
var xTween:Tween = new Tween(mySprite, "x", Elastic.easeOut, 100,200, 2 , true);
xTween.addEventListener(TweenEvent.MOTION_FINISH,continueMove);
function continueMove(evt:TweenEvent):void {
var tmpTween:Tween = evt.target as Tween;
if (mySprite.x > 300) {
} else {
tmpTween.continueTo(mySprite.x+ 50, 1);
}
}
//---------------------------------------------------------------对文字实现特效拖动处理---------------------------------------------------------------
话说文字TextField不支持拖动startDrag,可以借用sprite或者mv作为容器进行巧妙的操作,代码如下,欢迎交流
import flash.text.TextField;
import flash.text.TextFormat;
import fl.transitions.Tween;
import fl.transitions.easing.Bounce;
import flash.display.Sprite;
var tt:TextField=newTextField();
var formate:TextFormat=new TextFormat();
formate.color=0xffff00;
formate.size=60;
formate.font="华文行楷";
tt.text="我爱你";
tt.setTextFormat(formate);
var bao:Sprite=new Sprite();
bao.addChild(tt);
stage.addChild(bao);
var tw:Tween=newTween(bao,"y",Bounce.easeOut,mouseY,300,6,true); //注意Tween类
bao.addEventListener(MouseEvent.MOUSE_DOWN,startdrag);
bao.addEventListener(MouseEvent.MOUSE_UP,stopdrag);
function startdrag(e:MouseEvent):void
{
tw.stop();
bao.x=mouseX;
bao.y=mouseY;
bao.startDrag(true);
}
function stopdrag(e:MouseEvent):void
{
bao.stopDrag();
var t:Tween=newTween(bao,"y",Bounce.easeOut,mouseY,300,6,true);
var t1:Tween=newTween(bao,"x",Bounce.easeOut,mouseX,200,6,true);
bao.addEventListener(MouseEvent.MOUSE_DOWN,stopMove);
function stopMove(e:MouseEvent):void
{
t.stop();
t1.stop();
tw.stop();
}
}