2012-03-28 8 views
0

ボタンが押されている間にアニメーションを再生しようとしましたが、これはうまくいきますが、最初のフレームに到達すると停止し、最後のフレームまでループバックしませんどのようにこれを達成するかもしれないか?それは私が何とかフレームのためのイベントを破ると、再び待機を開始する必要がありますように...思えるアニメーションを後ろにループするAS3

backward_btn.addEventListener(MouseEvent.MOUSE_DOWN, setDownTrue); 
backward_btn.addEventListener(MouseEvent.MOUSE_UP, setDownFalse); 

addEventListener(Event.ENTER_FRAME, checkDown); 

var isDown:Boolean = false; 

function setDownTrue(e:MouseEvent){ 
    isDown = true; 
} 

function setDownFalse(e:MouseEvent){ 
    isDown = false; 
} 

function checkDown(e:Event){ 
    if(isDown == true){ 
     prevFrame(); 
     if(currentFrame == 1){ 
      gotoAndStop(120); //120 is the last frame of the animation 
      isDown = false; 
     } 
    } 

} 

ありがとう!

+0

を私はやりましたあなたが望むなら、それを設定したスピードに逆行して逆方向に再生します(逆方向に再生するには-1)。 あなたのコードはうまくいくはずです。あなたが言ったように問題が起きる可能性が最も高いです。120にフレームを再生する時間がありません。 –

答えて

1

ENTER_FRAMEイベントはあなたの問題ではありません、それが引き金を続けています。ただし、isDownは最後のフレームではfalseになります。連続してループするには、gotoAndStop行の後にisDown = false;isDown = true;に変更する必要があります。

myMovieClip //your instance on the stage 

は、あなたのムービークリップがクリックで逆方向に再生したいと言うことができます:私は実際にちょうどこれで同僚の助け

+0

hmmm朝にこれを試してみます... isDownはすでに当てはまりましたが、基本的にはfalseに設定していますので、すぐに真となり、続行します。残念ながら、新しいマウスダウンイベントが必要です。これを試してください – RyanJP

+0

理由を説明できませんが、isDow n変数は、gotoAndStopの直後にfalseを返すようになります。ちょうどそれを試してください、広告のトレース(isDown); ENTER_FRAMEのハンドラの先頭にif節を入れてください。 – evilpenguin

+0

が優れています。完全に動作します。ありがとう! – RyanJP

0
自分で保存

いくつかの問題とtotalFramesを使用します。

if(currentFrame == 1) 
    gotoAndStop(totalFrames); 

else prevFrame(); 
+0

MovieClipクラス内のPrevFrame()関数は、nextFrame() :) –

+0

Touche - ビットマップを超えてこの組み込みの表示クラスを積極的に避けると、これが起こります。P – Marty

+0

totalFrames-はい、私のコードに追加しました – RyanJP

1

私は私のアニメーションクラスを投稿します

myMovieClip.addEventListener(MouseEvent.CLICK, onClick); 
function onClick(e:MouseEvent):void 
{ 
    addEventListener(Event.ENTER_FRAME, playBackwards); 
} 

function playBackwards(e:Event):void 
{ 
    var frame:int = myMovieClip.currentFrame -1; //get frame before current; 
    myMovieClip.gotoAndStop(frame); // go to that frame 
    if(frame == 1) removeEventListener(Event.ENTER_FRAME, playBackwards); //if the frame is the first frame then remove the enterframe event 
} 
関連する問題