[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");
}
댓글
댓글 쓰기