2010년 4월 16일 금요일

7. Motion _ (2) 재생 버튼 모션 만들기

이번에는 버튼으로 모션을 제어하는 예제를 만들어보자.

 

[code as3]
package
{
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;

public class MotionExample02 extends Sprite
{
 public function MotionExample02()
 {
  super(); // Sprite 객체 생성

  pan_mc.stop(); // 펜 초기 설정 정지

  play_mc.stop(); // 재생버튼 초기 설정 정지

  // 각 버튼 이벤트 등록
  play_mc.addEventListener(MouseEvent.CLICK, playButtonClickHandler);
  stop_mc.addEventListener(MouseEvent.CLICK, stopButtonClickHandler);
  prev_mc.addEventListener(MouseEvent.CLICK, prevButtonClickHandler);
  next_mc.addEventListener(MouseEvent.CLICK, nextButtonClickHandler);

  // 각 버튼 마우스 오버시 손모양
  setButtons(play_mc);
  setButtons(stop_mc);
  setButtons(prev_mc);
  setButtons(next_mc);
 }

 /**
  *  @private
  *  버튼 모드
  */
 private function setButtons(target:MovieClip):void
 {
  target.buttonMode = true;
  target.useHandCursor = true;
 }

 /**
  *  @private
  *  재생 버튼
  */
 private function playButtonClickHandler(event:MouseEvent):void
 {
  if(play_mc.currentFrame == 1) // // 재생버튼이면
  {
   play_mc.gotoAndStop(2); // 일시정지 버튼으로

   pan_mc.play(); // 재생

   pan_mc.addEventListener(Event.ENTER_FRAME, panStopHandler); // 펜 정지 이벤트 수신 등록
  }
  else // 일시정지 버튼이면
  {
   play_mc.gotoAndStop(1); // 재생 버튼으로

   pan_mc.stop(); // 펜 정지
  }
 }

 /**
  *  @private
  *  정지 버튼
  */
 private function stopButtonClickHandler(event:MouseEvent):void
 {
  play_mc.gotoAndStop(1); // 재생 버튼 모드
  pan_mc.gotoAndStop(1); // // 처음 재생 모드
 }

 /**
  *  @private
  *  펜 정지
  */
 private function panStopHandler(event:Event):void
 {
  if(pan_mc.currentFrame == pan_mc.totalFrames) // 프레임이 끝나면
  {
   pan_mc.stop(); // 재생 정지
   play_mc.gotoAndStop(1); // 처음 재생 모드로
   pan_mc.removeEventListener(Event.ENTER_FRAME, panStopHandler); // 수신 이벤트 제거
  }
 }

 /**
  *  @private
  *  이전 버튼
  */
 private function prevButtonClickHandler(event:MouseEvent):void
 {
  if(pan_mc.currentFrame == 1) // 첫 프레임이면
  {
   pan_mc.gotoAndStop(pan_mc.totalFrames); //마지막 프레임으로
  }
  else
  {
   pan_mc.prevFrame(); // 이전 프레임으로
  }
 }

 /**
  *  @private
  *  다음 버튼
  */
 private function nextButtonClickHandler(event:MouseEvent):void
 {
  if(pan_mc.currentFrame == pan_mc.totalFrames) // 마지막 프레임이면
  {
   pan_mc.gotoAndStop(1); // 첫 프레임으로
  }
  else
  {
   pan_mc.nextFrame(); // 다음 프레임으로
  }
 }
}
}
[/code]

 

 

아주 간단한 예제를 한번 만들어 보았다. 음..잘되는 것 같다. 하지만 여기에는 많이 문제들이 숨어 있다.

댓글 없음:

댓글 쓰기