일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- flash cs3
- 샌프란시스코
- 스케일폼
- 수학정석
- 플래시
- 집합의 연산
- as3.0
- 형변환
- Chart
- watch
- flash player 10
- scaleform
- autodesk
- flash
- 태그클라우드
- CLIK
- scaleform3
- as3
- 강좌
- addChild
- scaleform4
- Document Class
- MMOKit
- 클릭
- KGC 2013
- 애드온
- ApplicationDomain
- GDC
- DataBinding
- as2
- Today
- Total
scaleform.minarto.com
as2용 Dictionary 클래스 만들기 - 0 본문
1. 인기가 없는 Dictionary 클래스
actionscript 3 부터 지원하는 Dictionary 클래스는 꽤 유용하게 쓰입니다.
하지만 여러 데이터 컨테이너 중에서도 가장 안쓰이는 편이기도 한 녀석입니다.
데이터 컨테이너에 관한 글은 히카님의 블로그에 보면 꽤나 자세히 설명되어 있습니다.
제 생각일 뿐입니다만... 아마도 그 이유는 익숙치 않기 때문일 거라 생각합니다.
as2 시절에는 없던 클래스이기도 하거니와,
Dictionary 는 포인터를 쓸 수 있는 데이터 컨테이너인데, 대부분의 플래시 개발자들은 포인터를 사용한다는 것에 대해서 이해가 부족하기 때문입니다.
Dictionary 를 또다른 Object 정도로만 생각하는 것이 중수 이하의 플래시 개발자들의 생각일 거라고 생각합니다...
(아니라고 하신다면 뭐 딱히 할 말은 없습니다만...)
2. Actionscript 2 용 Dictionary 클래스를 만들어보자
그럼에도 불구하고 Dictionary 클래스는 꽤나 유용한 편입니다.
앞서 말한 대로 포인터를 사용할 수 있기 때문이죠...
스케일폼을 사용하는 개발자들은 아직도 불안한 스케일폼 as3 보다는(언리얼 내장 스케일폼은 왜 업데이트를 안해주나요...) as2 를 많이 사용하고 있습니다.
그런데 문제가 있는 것이 이 Dictionary 란 녀석이 actionscript3 에서부터 지원하기 때문에 as2에서는 딱히 사용할 방법이 없습니다.
이번 포스팅에서는 actionscript2 용 Dictionary 클래스를 만들어보도록 하겠습니다.
참고로 이 포스팅을 이해하기 위해서는 클로저에 대한 이해가 필요합니다.
(정확히 말하자면 Dictionary 만들기를 가장한 클로저 글일지도... ㅡㅡ;;)
3. Basic
코드를 보시죠
dynamic class com.minarto.utils.Dictionary { public function Dictionary() { this.__proto__.setValue = Dictionary.prototype.setValue(); } public function setValue($target, $value) { var c:Number = 0; return function($target, $value):Void { if ($target) { $target.__dictionary__ || ($target.__dictionary__ = ++ c); this[$target.__dictionary__] = $value; } }; }; public function getValue($target) { return $target ? this[$target.__dictionary__] : $target; } }
가장 기본적인 Dictionary 클래스를 만들어 봤습니다.
setValue 함수를 이용해 객체와 값을 넣을 수 있도록 했고, getValue 함수를 이용해 객체를 인자로 값을 가져올 수 있습니다.
코드를 한줄 정리하자면,
Dictionary 를 해시맵화 시켜서 각 객체에 키값을 할당하고 그 키값을 이용해서 값을 가져오도록 만든겁니다.
자, 설명은 다음 포스팅으로 넘어가도록 하겠습니다.
p.s. 이 코드만으로는 완벽하지 않습니다.
포스팅을 진행하며 공개할 최종코드가 나오기 전에 혹시라도 실무에 사용하시면 문제가 발생할 수 있습니다.