2012-01-07 11 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(); 

ORはこれを行うには良い方法はありますか?私はTweensを起動し、関数を呼び出すことによってそれらを停止したいと考えています。歩き回ってターンオフします。 - 本当にありがとう!

答えて

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

アメージング!どうもありがとうございます! –

0

どのようにしてウォブリングを止めたいですか?ウォブリングが数回後に停止するか、ユーザーがボタンをクリックする必要がありますか?

何回かウォブリングを止めたい場合は、タイマーを使用する必要があります。タイマーイベントでwobble()を呼び出します。ウォブリングがユーザーによってストップされる場合は、トリガーを使用するだけではなく、 isStoppedがtrueに設定されている場合は、wobble()から戻ります。

関連する問題