전공/실무

[as2.0&3.0]controlBar

하루는노력 2012. 12. 6. 20:04
728x90
반응형

AS3.0 ControlBar_swf
import flash.media.Sound;

/*****************************************/
var playSpace:MovieClip = mcLoad;//플레이 객체
var controllArea:MovieClip = mcControll.controllArea;//바 이름
var barBg:MovieClip = mcControll.bar_bg;//바 이름
var barSymbol:MovieClip = mcControll.btn;//바 심폴
var playBtn:MovieClip = mcControll.play_btn;//플레이버튼
var stopBtn:MovieClip = mcControll.stop_btn;//정지버튼
barSymbol.buttonMode = true;
playBtn.buttonMode = true;
stopBtn.buttonMode = true;
/*****************************************/


var booPlay:Boolean = true;//초기값 플레이 여부
var booDrag:Boolean = false;//유저 드레그 여부
var booRepeat:Boolean = false;//리핏 기능
var goFrame:Number;//유저가 드래그 한 위치로 이동

var totalFramesNumber:Number;//전체 프레임
var currentFrameNumber:Number;//진행 프레임
var barBgWidth:Number;//컨트롤바 넓이 계산

mcLoad.addEventListener(Event.ENTER_FRAME,init);//초기 세팅

function init(e:Event):void{//초기값 세팅
     if( !totalFramesNumber ){
          totalFramesNumber = playSpace.totalFrames;//전체 길이
          barBgWidth = barBg.width-(barSymbol.width/2);//컨트롤바 넓이 = 바 넓이-(바 심폴/2)
          playHandler();//플레이컨트롤
     }else{
          currentFrameNumber = playSpace.currentFrame;//진행계산
                   
          if( !booDrag ){//barSymbol 드래그 아니면
               /*************+83 => barSymbol 상대적 x=0 위치******************/
               barSymbol.x = ((currentFrameNumber*barBgWidth)/totalFramesNumber)+83;
          }
         
         
          barSymbol.addEventListener(MouseEvent.MOUSE_DOWN, barSymbolDownHandler);//컨트롤바 심볼(startDrag)
         
          playBtn.addEventListener(MouseEvent.CLICK, playBtnHandler);//플레이버튼
          stopBtn.addEventListener(MouseEvent.CLICK, stopBtnHandler);//정지버튼
          if( !booRepeat && currentFrameNumber >= totalFramesNumber ){//마지막 페이지 일때
               booPlay = false;//정지
               playHandler();
          }
     }
}

function barSymbolDownHandler(e:MouseEvent):void{//드레이 중(마우스 클릭 상태)
     playSpace.stop();

     booDrag = true;//드레그 시작
     booPlay = !booDrag;
    
     var rec:Rectangle = new Rectangle(barBg.x,barBg.y,barBgWidth,0);//x,y,w,h
     barSymbol.startDrag(false,rec);//flash.display
    
     barSymbol.addEventListener(MouseEvent.MOUSE_MOVE, barSymbolMoveHandler);//컨트롤바 심볼(Drag)
     barSymbol.addEventListener(MouseEvent.MOUSE_UP, barSymbolUpHandler);//컨트롤바 심볼(stopDrag)
}

function barSymbolMoveHandler(e:MouseEvent):void{//마우스 이동
     /*************(barSymbol.x-83) => barSymbol 상대적 x=0 위치******************/
     goFrame = Math.floor (((barSymbol.x-83)*totalFramesNumber)/barBgWidth);
     playSpace.gotoAndStop(goFrame);    
}

function barSymbolUpHandler(e:MouseEvent):void{//드레이 이후(마우스 놓았을 때)
     booDrag = false;
     booPlay = !booDrag;
     barSymbol.removeEventListener(MouseEvent.MOUSE_DOWN, barSymbolDownHandler);
     barSymbol.removeEventListener(MouseEvent.MOUSE_MOVE, barSymbolMoveHandler);
     playSpace.gotoAndPlay(goFrame);
     barSymbol.stopDrag();
}

function playBtnHandler(e:MouseEvent):void{//플레이 버튼 컨트롤
     if( booPlay ){//플레이 true
          booPlay = false;
          if( currentFrameNumber >= totalFramesNumber ){//현재 프레임이 전체와 같거나 크면
               currentFrameNumber = 1;
          }
     }else{
          booPlay = true;
     }
     playHandler();
}

function stopBtnHandler(e:MouseEvent):void{//정지 버튼 컨트롤
     booPlay = false;
     playSpace.gotoAndStop(1);
}

function playHandler(){//플레이 컨트롤
     if( !booRepeat && ( currentFrameNumber >= totalFramesNumber )){//리핏 기능 없고 현재 프레임이 전체와 같거나 커지면
          booPlay = false;
          currentFrameNumber = totalFramesNumber;
     }else if( currentFrameNumber >= totalFramesNumber ){//현재 프레임이 전체와 같거나 크면         
          booPlay = true;
          currentFrameNumber = 1;
     }
     if( booPlay ){//false
          playBtn.gotoAndStop(1);
          playSpace.play();
     }else{
          playBtn.gotoAndStop(2);
          playSpace.stop();
     }
}

반응형
LIST

'전공 > 실무' 카테고리의 다른 글

[as3.0] 백넥과 팝업  (1) 2012.12.06
[as2.0&3.0]volume  (0) 2012.12.06
[as3.0]부모, 자식 객체  (0) 2012.12.06
[as3.0] getChildAt, getChildByName  (0) 2012.12.06
xmlrpc [soap] 실 사용 방법 소스 바로 적용 가능~^^  (0) 2011.08.17