[Flash/ActionScript] 3일차 - 이벤트

[Flash/ActionScript] 3일차 - 이벤트


1. 마우스 이벤트를 이용한 드래그앤 드롭 


import flash.display.MovieClip;
import flash.events.MouseEvent;

var mc:MovieClip = this.getChildByName("mc") as MovieClip;

mc.addEventListener(MouseEvent.MOUSE_DOWN, onStartDrag);
mc.addEventListener(MouseEvent.MOUSE_UP, onStopDrag);

function onStartDrag(ev:MouseEvent):void{
 ev.target.startDrag();
}
function onStopDrag(ev:MouseEvent):void{
 stopDrag();
}

stage.addEventListener(MouseEvent.MOUSE_UP, onStopDrag); 
//스테이지에서 마우스를 멈추어도 드래그가 끝나게끔설정

무비클립 객체에 액션을 작성.
import flash.events.MouseEvent;

this.buttonMode = true; //마우스를 객체 위에 놓으면 마우스 포인터가 손모양으로바뀜
this.addEventListener(MouseEvent.MOUSE_DOWN, downLisner); //무비클립(this)를 마우스로 누르면 down이벤트를 호출
//드래그시작
function  downLisner(ev:MouseEvent):void{
 this.startDrag(); 
//화면 어디서든 마우스를 때면 up이벤트 호출
 stage.addEventListener(MouseEvent.MOUSE_UP, upLisner);
}

//드래그중지
function upLisner(ev:MouseEvent):void{
 this.stopDrag();
//화면에 등록했던 up이벤트를 제거
 stage.removeEventListener(MouseEvent.MOUSE_UP, upLisner);
}

드래그 범위지정.
import flash.events.MouseEvent;
import flash.geom.Rectangle;

//화면밖으로 나가지 않게끔 영역을 지정하는 방법
var maxWidth:Number = stage.stageWidth - this.width;
var maxHeight:Number = stage.stageHeight - this.height;

//사각형 객체를 만든다음에 지정한다.
var bounds:Rectangle = new Rectangle(0,0, maxWidth, maxHeight);

this.buttonMode = true;
this.addEventListener(MouseEvent.MOUSE_DOWN, downLisner);

function  downLisner(ev:MouseEvent):void{
 this.startDrag(false, bounds); // 범위지정!
 stage.addEventListener(MouseEvent.MOUSE_UP, upLisner);
}

function upLisner(ev:MouseEvent):void{
 this.stopDrag();
 stage.removeEventListener(MouseEvent.MOUSE_UP, upLisner);
}

2. 키보드 이벤트를 사용해 메서드 호출하기


import flash.display.MovieClip;
import flash.events.KeyboardEvent;

var mc:MovieClip = this.getChildByName("mc") as MovieClip;
stop();

stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed);

function onKeyPressed(ev:KeyboardEvent):void{
 switch(ev.keyCode){
  case Keyboard.ENTER:
   play();
   break;
  case Keyboard.LEFT:
   prevFrame();
   break;
  case Keyboard.RIGHT:
   nextFrame();
   break;
  case Keyboard.SPACE:
   gotoAndStop(3);
   break;
  default:
  trace("KeyCode", ev.keyCode);
 }
}

3.이벤트전달


folder0.addEventListener(MouseEvent.MOUSE_OVER, onFolderOver);
folder0.addEventListener(MouseEvent.MOUSE_OUT, onFolderOut);
folder1.addEventListener(MouseEvent.MOUSE_OVER, onFolderOver);
folder1.addEventListener(MouseEvent.MOUSE_OUT, onFolderOut);

function onFolderOver(evt:MouseEvent):void{
  evt.target.alpha = 0.5;
}

function onFolderOut(evt:MouseEvent):void{
  evt.target.alpha = 1;
}

4.그룹으로 이벤트전달

folder_group.addEventListener(MouseEvent.MOUSE_OVER, onFolderOver);
folder_group.addEventListener(MouseEvent.MOUSE_OUT, onFolderOut);

function onFolderOver(evt:MouseEvent):void{
  evt.target.alpha = 0.5;
}

function onFolderOut(evt:MouseEvent):void{
  evt.target.alpha = 1;
}

//folder_group.mouseChildren = false;

5. 이벤트 target과 currentTarget 속성

리스너가 추가되어 있는 무비클립을 변경하게 된다.
그룹으로 이벤트전달하는 폴더 예제에서 target=> currentTarget 으로 변경하게 되면 그룹 전체의 투명 값이 변한다.

6. 타이머 이벤트

import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.display.MovieClip;

var timer:Timer = new Timer(1000);

timer.addEventListener(TimerEvent.TIMER, onTimer);
timer.start();

var min:MovieClip = this.getChildByName("min") as MovieClip;

function onTimer(evt:TimerEvent):void {
 min.rotation += 6;
 if( min.rotation >= 30){
  timer.removeEventListener(TimerEvent.TIMER, onTimer);
 }
}

7. 링크

function OnLInk(ev:MouseEvent):void{
 trace("LINK");
 var request:URLRequest = new URLRequest();
 request.url = "http://www.naver.com";
 navigateToURL(request, "_self");
}

댓글

이 블로그의 인기 게시물

[파이썬] #2-모듈설치 및 스파이더(spyder)사용

[Tool-Tip] 에디트플러스에서 자동정렬기능 추가하기

[파이썬] #1- 아나콘다 설치, 아나콘다 파이썬 환경 만들기