2012-01-07 72 views
0

我正在進行角色散步。這段代碼會使他向右擺動,當它完成時,它會觸發他向左擺動,然後再次調用該函數以繼續循環。在該功能中調用該功能並稍後停止循環 - 啓動和追蹤功能

我可以通過調用該函數來使循環正常工作,但是如何停止該函數? 另外我想稍後再調用它。有沒有辦法開始和停止一個功能?

function wobble() 
{ 
    var ws = .1; 
    var dis = 1; 

    var WobbleRight:Tween = new Tween(Beau, "rotation", Strong.easeIn, Beau.rotation, dis, ws, true); 
    WobbleRight.addEventListener(TweenEvent.MOTION_FINISH, WobbleL); 
    function WobbleL(e:TweenEvent):void 
     { 
     var WobbleLeft:Tween = new Tween(Beau, "rotation", Strong.easeIn,Beau.rotation, -dis, ws, true); 
     WobbleLeft.addEventListener(TweenEvent.MOTION_FINISH, WobbleR); 
      function WobbleR(e:TweenEvent):void 
      { 
      wobble(); 
      } 

     } 
} 
wobble(); 

,或是否有更好的方式來做到這一點?我想要啓動補間並通過調用函數來阻止它們。開啓WALK並關閉。 - 非常感謝!

回答

1

試用此代碼。請注意Tween如何重用,並且在Tween運動重新啓動時,begin的位置重置爲Beau.rotation。另外,不要將你的函數嵌入到另一個函數中。

(我強調了運動和慢了用於測試):

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

var ws = 1; 
var dis = 10; 

var WobbleRight:Tween; 
var WobbleLeft:Tween; 

this.addEventListener(MouseEvent.CLICK, toggleWobble); 

function startWobble():void 
{ 
    WobbleR(null); 
} 

function WobbleL(e:TweenEvent):void 
{ 
    if (!WobbleLeft) 
    { 
     WobbleLeft = new Tween(Beau, "rotation", Strong.easeIn, Beau.rotation, -dis, ws, true); 
     WobbleLeft.addEventListener(TweenEvent.MOTION_FINISH, WobbleR); 
    } else { 
     WobbleRight.begin = Beau.rotation; 
     WobbleLeft.start(); 
    } 
} 


function WobbleR(e:TweenEvent):void 
{ 
    if (!WobbleRight) 
    { 
     WobbleRight = new Tween(Beau, "rotation", Strong.easeIn, Beau.rotation, dis, ws, true); 
     WobbleRight.addEventListener(TweenEvent.MOTION_FINISH, WobbleL); 
    } else { 
     WobbleRight.begin = Beau.rotation; 
     WobbleRight.start(); 
    } 
} 

function toggleWobble(e:MouseEvent):void 
{ 
    if(WobbleRight && WobbleRight.isPlaying) { 
     WobbleRight.stop(); 
    } else if (WobbleLeft && WobbleLeft.isPlaying) { 
     WobbleLeft.stop(); 
    } else { 
     startWobble(); 
    } 
} 

startWobble(); 
+0

驚人!非常感謝! – 2012-01-10 08:50:49

0

以什麼方式你想停止搖擺?多次搖擺停止,或者用戶應該點擊一個按鈕?

如果您想多次停止擺動,那麼您應該使用計時器。在定時器事件中調用wobble()。如果用戶停止擺動,則不僅僅是使用觸發器isStopped。如果isStopped設置爲true,則從擺動()返回。