1. 程式人生 > >ActionScript 3.0對文字實現Tween類特效拖動處理

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) {
 

  tmpTween.yoyo();
} 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();
   }
 }