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
- Document Class
- as2
- GDC
- ApplicationDomain
- 플래시
- flash
- 클릭
- 태그클라우드
- KGC 2013
- 강좌
- 수학정석
- flash cs3
- autodesk
- addChild
- as3.0
- watch
- Chart
- MMOKit
- CLIK
- scaleform3
- 애드온
- 스케일폼
- as3
- scaleform
- 형변환
- 샌프란시스코
- DataBinding
- 집합의 연산
- scaleform4
- flash player 10
Archives
- Today
- Total
scaleform.minarto.com
scaleform 3&4 - 4 : MouseEvent 2/ 2 본문
stage 의 Mouse 핸들러를 통해 currentTarget 를 알아냈다면, 이벤트 발생은 간단하다
var current Target:UIComponent;
currentTarget.dispatchEvent(new MouseEvent(MouseEvent.CLICK, this, currentTarget));
(실제 dispatchEvent 는 private 이기 때문에, 래핑해서 다른 메소드로 dispatchEvent 를 해주는 것이 낫다)
이렇게 하면 gfx.controls.Button 을 상속받지 않고도 똑같이 "click" 이벤트를 발생시킬 수 있다....
물론 이벤트 객체를 만들어야 하는 비용이 소모되지만 UI특성상 계속해서 인터랙션이 일어난다는 걸 생각해본다면 딱 한개만 미리 만들어놓고 계속해서 재활용해도 된다
각설하고 이게 기존 gfx.controls.Button 방식과 머가 차이가 나느냐~ 하면, 기존에는
1. 마우스 이벤트를 걸면 그 순간 하위객체는 마우스 인터랙션이 일어나지 않는다.
2. 그렇기 때문에 컨테이너는 버튼으로 써서는 안되고, 따로 영역객체를 만들어야 한다... 이건 곧 자원의 낭비
3. 마우스 이벤트를 모든 객체에서 직접 따로 처리하니 이것 또한 자원의 낭비
가 되시겠다...
위와 같이 처리하면 1~3 이 모두 해결된다... (단, rollOver 와 rollOut 은 scaleform Mouse class 에서 처리하지 못하니 두가지 이벤트 이외의 이벤트를 처리할 곳에만 사용하는 것이 낫다)
UIComponent 에(scaleform의 UIComponent 말고 직접 만들었다면) as3 의 mouseChildren, mouseEnabled 속성을 추가하여 동작시킬 수도 있으니... 이또한 더욱 as3와 같아진다...
MouseEvent 는 이정도면 됐고, 다음에는 KeyboardEvent 로 넘어가시겠다...