2014-01-18 3 views
0

나는 플래시 게임을 만들고 있는데, "Jumping"애니메이션 후에 "Staying"애니메이션을 다시 시작해야한다.AS3. 애니메이션이 완료된 후 다른 애니메이션을 사용하는 방법은 무엇입니까?

저는 점프 애니메이션의 마지막 프레임에서 parent.gotoAndStop("staying");을 사용해야한다고 알고 있습니다. 이전에는 효과가 있었지만 지금은 새로운 캐릭터를 추가하고 이제는 애니메이션을 사용하려고 할 때 오류가 발생합니다. 오류 : 1061: Call to possibly undefined method gotoAndStop through a reference with static type flash.display:DisplayObjectContainer.

나는 이것을 시도한 후 애니메이션 루프를 영원히 뛰어 넘습니다. 도 시도한 후에 stop();을 시도했습니다 - 마지막 프레임에서 애니메이션이 중지되지만 애니메이션을 시작해야합니다 staying. 도와 주실 수 있겠습니까? 고맙습니다. 이 같은

+0

해당 코드의 위치, 오류시 액세스 할 수있는 위치 및 외부에서 플레이어 MC를 어떻게 참조 할 지에 대한 자세한 코드 또는 정보를 게시해야합니다. – Vesper

답변

0

시도 뭔가 :

if(player.currentFrameLabel=="jumping"){ 
    if(player.(getChildAt(0) as MovieClip).currentFrame==totalFrames){ 
     player.gotoAndStop("Staying"); 
    } 
} 

편집 : 난 당신이 타임 라인을 사용하지 않는, 타임 라인을 클래스를 사용하지 않는 것으로 가정했다
, 즉 AS3.0에 대한 끔찍한 생각이다.

Edit2가 : 인스턴스에 대한 참조는 "선수는"타임 라인에서 작업하는 경우에는 위의 코드처럼 플레이어의 참조해야 할 경우
다음 같은 일이 적용됩니다.

+0

타임 라인의 마지막 프레임에서이 코드를 사용 했으므로이 코드를 사용해야합니까? –

+0

keyDown 함수에서 사용할 때 :'1120 : 정의되지 않은 속성의 액세스 currentFrameLabel.' 다른 '1178 : 정적 유형 Script.' 및 다른'1059 : 속성이 읽혀진 액세스 할 수없는 속성 currentFrame에 대한 액세스가 시도되었습니다. ' -only .' –

+0

@ Zhafur 프레임 레이블은 한 프레임에만 할당되기 때문에 작동하지 않아야합니다. 따라서'currentFrameLabel == "jumping"이면 한 프레임 만 있고 애니메이션의 시작이 아니라 끝입니다. – Vesper

0

은 당신의 점프 애니메이션

MovieClip(parent).gotoAndStop("staying"); 

비결은 간단하다의 마지막 프레임에있을 것입니다. parent 속성은 MovieClip에서 DisplayObjectContainer까지 상속되며 객체에 대한 참조는 DisplayObjectContainer으로 반환됩니다. 거기에 gotoAndStop 메서드가 정의되어 있지 않으므로이 참조를 MovieClip으로 변환하여 해당 속성과 메서드에 액세스해야합니다. 당신이 얻은 오류 (1061)가 이것에 관해 당신에게 말했습니다.

+0

감사합니다. 이제 공중에있을 때 (점프) 왼쪽/오른쪽 화살표를 클릭하면 (왼쪽 또는 오른쪽으로 이동하려고 함) 점프 애니메이션 취소 및 문자가지면으로 순간 이동합니다. 캐릭터를 공중에 올려 놓고 화살표 (왼쪽/오른쪽)를 클릭하면 점프 애니메이션을 방해하지 않고 지상으로 순간 이동하지 않고 올바른면으로 이동했습니다. –

+0

애니메이션을 사용하지 않고 'x'속성을 사용하여 캐릭터를 좌우로 움직여야합니다. 캐릭터가 좌우로 서로 다른 애니메이션을 가지고 있습니까? – Aspiro

+0

알아요.하지만 캐릭터 이동 애니메이션은 캐릭터가 움직일 때 다리를 움직이기위한 것입니다. –

관련 문제