ActionScript 3.0對文字實現Tween類特效拖動處理
先說明一下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();
}
}