2014-01-20 162 views
1

在一個框架腳本中,我有一個事件監聽器,當補間動作完成時應該調用'onFinish'函數。 (請參閱下面的紅色相關部分。)我從來沒有看到「完成補間」輸出。它默默地失敗。我已經在不同的地方嘗試了addEventListener ..無濟於事。我錯過了什麼? 謝謝!補間事件監聽器

import fl.transitions.*; 
import fl.transitions.easing.*; 
import fl.transitions.Tween; 
import fl.transitions.TweenEvent; 

var currentFrameMC = animImg; 

var scaleXTween:Tween=new Tween(animImg,"scaleX",Bounce.easeOut, 1,2,2.4,true); 
var scaleYTween:Tween=new Tween(animImg,"scaleY",Bounce.easeOut, 1,2,2.4,true); 
var alphaTween:Tween = new Tween(animImg, "alpha", Strong.easeOut, .5, 1, 11, true); 

//Put a listener on the MC so I can tell when it's done tweening the scale. 
currentFrameMC.addEventListener(TweenEvent.MOTION_FINISH, onFinish); 


//This is another event listner put on a button: 
//(The button, when clicked, will trigger the shrinking of the animImg MC) 
reverseTween1.addEventListener(MouseEvent.CLICK,shrinkFrameMC); 

//Shrink/scale down the anImg by tweening 
function shrinkFrameMC(e:MouseEvent) //This scales down the playing movie clip 
{ 
scaleXTween=new Tween(currentFrameMC,"scaleX",None.easeNone, currentFrameMC.scaleX,1,3,true); 
scaleYTween=new Tween(currentFrameMC,"scaleY",None.easeNone, currentFrameMC.scaleY,1,3,true); 
//Tween the alpha state of the movie clip again, this time in reverse 
alphaTween=new Tween(currentFrameMC, "alpha", Strong.easeOut, 1, .5, 11, true); 
} 

function onFinish(e:TweenEvent):void //This does an action when the frame MC is done tweening 
{ 
    trace ("done tweening"); 
    //NEVER SEE THIS OUTPUT 
} 

回答

0

您需要將Tween事件偵聽器分配給Tween,而不是將對象設置爲補間。

0

其工作:

import fl.transitions.*; 
import fl.transitions.easing.*; 
import fl.transitions.Tween; 
import fl.transitions.TweenEvent; 

var scaleXTween:Tween=new Tween(animImg,"scaleX",Bounce.easeOut, 1,2,2.4,true); 
var scaleYTween:Tween=new Tween(animImg,"scaleY",Bounce.easeOut, 1,2,2.4,true); 
var alphaTween:Tween = new Tween(animImg, "alpha", Strong.easeOut, .5, 1, 11, true); 

//Put a listener on the MC so I can tell when it's done tweening the scale. 
scaleXTween.addEventListener(TweenEvent.MOTION_FINISH, onFinish); 


//This is another event listner put on a button: 
//(The button, when clicked, will trigger the shrinking of the animImg MC) 
reverseTween1.addEventListener(MouseEvent.CLICK,shrinkFrameMC); 

//Shrink/scale down the anImg by tweening 
function shrinkFrameMC(e:MouseEvent) //This scales down the playing movie clip 
{ 
    scaleXTween=new Tween(currentFrameMC,"scaleX",None.easeNone, currentFrameMC.scaleX,1,3,true); 
    scaleYTween=new Tween(currentFrameMC,"scaleY",None.easeNone, currentFrameMC.scaleY,1,3,true); 
//Tween the alpha state of the movie clip again, this time in reverse 
    alphaTween=new Tween(currentFrameMC, "alpha", Strong.easeOut, 1, .5, 11, true); 
} 

function onFinish(e:TweenEvent):void //This does an action when the frame MC is done tweening 
{ 
    trace ("done tweening"); 
    //NEVER SEE THIS OUTPUT 
}