2012-03-28 2 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

나는 내가 그랬어 내 애니메이션 클래스를 게시합니다 :

myMovieClip //your instance on the stage 

당신이 당신의 무비 클립을 클릭 거꾸로 재생하려는 말할 수를 원한다면 설정 한 속도에 따라 역방향으로 재생됩니다 (뒤로 재생하려면 -1). 코드가 작동해야합니다. 문제는 말했듯이 120 프레임으로 재생하기 전에 프레임을 재생할 시간이 없습니다. –

답변

1

ENTER_FRAME 이벤트가 당신의 문제가 아니다, 그것은 트리거하고 있습니다. 그러나 isDown은 마지막 프레임에서 false로 바뀝니다. 연속적으로 반복하기 위해서는 gotoAndStop 행 다음에 isDown = false;isDown = true;으로 변경해야합니다.

실제로 그냥이와 동료 도움
+0

hmmm 아침에 시도합니다. ... isDown은 이미 사실입니다.하지만 기본적으로 false로 설정 했으므로 즉시 다시 true로 트리거하고 계속 진행합니다. 불행히도 새로운 마우스 이벤트가 필요합니다. 이것을 시도해보십시오 – 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 - 비트 맵을 넘어서는이 inbuilt 디스플레이 클래스를 적극적으로 피할 때 발생하는 현상입니다. 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 
} 
관련 문제