Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 애드온
- ApplicationDomain
- as2
- Document Class
- MMOKit
- 클릭
- as3.0
- CLIK
- 태그클라우드
- watch
- scaleform
- scaleform4
- flash cs3
- GDC
- 샌프란시스코
- flash player 10
- 집합의 연산
- 강좌
- 수학정석
- KGC 2013
- addChild
- autodesk
- DataBinding
- scaleform3
- 스케일폼
- flash
- Chart
- as3
- 형변환
- 플래시
Archives
- Today
- Total
scaleform.minarto.com
scaleform 3&4 - 2 : CLIK 2/2 본문
EventDispatcher 를 사용한(상속은 아니다... 오히려 위임에 가깝다고나 할까?) 무비클립을 상속받은 UIComponent 가 있고 그걸 상속 받은 Button class 들이 있다...
대부분 이녀석을 이용해 인터랙션을 처리한다...
var a:Number = 1;
var btn :Button;
a라는 숫자값이 있고 btn 이란 버튼이 있다고 치자... 버튼을 클릭했을 때 a를 출력하는 핸들러를 작성하고자 한다면...
as2의 버튼이라면 보통 다음과 같이 짠다
btn.onRelease = function():Void
{
trace(this._parent.a)
}
/////////////
1
as2 개발력(?)이 있는 친구들은 scope 문제 해결땜시 Delegate class 를 이용해 이렇게 짤 것이다.
/////////////
1
as2 개발력(?)이 있는 친구들은 scope 문제 해결땜시 Delegate class 를 이용해 이렇게 짤 것이다.
btn.onRelease = Delegate.create(this, hnRelease);
function hnRelease():Void
{
trace(a);
}
EventDispatcher 를 이용하면 다음과 같다.
btn.addEventListener("click", this, "hnRelease");
function hnRelease($:Object):Void
{
trace(a);
}
자, as3와 거의 유사하지 않은가? 핸들러를 String으로 넣어줘야 한다는 것과, as3에서는 scope 인자가 없지만 as2에서는 인자를 직접 지정해줘야 하는 정도다. 불편할 것 같지만 scope도 직접 지정해 줄 수 잇으니, 직접 옵저버에게 던져줄 수도 있다...
물론 "click" 도 MouseEvent class를 만들어 상수값을 만들어MouseEvent.CLICK 라고 쓸 수도 있다...
(as2에서는 as3의 const 처럼 상수형을 만들 수는 없지만, 그냥 public static var 를 써서 만들어쓰면 되니깐...)
참고로 as2에서는 on으로 시작하는 class 이벤트 메소드 들이 많기 때문에 핸들러들의 접두어를 "hn"으로 붙였다... as3에서는 "on" 으로 붙이는 개발자 친구들이 많은데 as2에서는 기존 메소드와 혼동될 수 있고, 겹칠 수 있기 때문에 지양하는 것이 좋다고 생각한다.
마찬가지 이유로 private 를 뜻하는 코딩룰로서 _ 를 붙이는 친구들이 많은데 as2에서는 기본 속성(특히 무비클립)이 _가 붙는 것이 많아 혼선을 피하기 위해 __ 두개를 붙이기도 한다...
코딩룰로서 제한할까 했지만, 두개 쓰기는 너무 귀찮아... 자제하기로 했다... _ 는 알아서 주의하자
앞으로 이 EventDispatcher 만을 이용해 as3 프레임웍을 간단히 만들어보기로 하겠다.