'AS3'에 해당되는 글 20건
2009.10.30 10:52
오랫만에 블로그 유입경로를 보다가 코리아몽키라는 분의 블로그를 알게 되었습니다.  [Actionscript 3.0] 간단하게 만들어 본 XML to arrayColection 함수 라는 글에서 제 글을 인용하셨더라구요. ;) 위의 글 말미에 코리아몽키님이 가진 의문이 있으셔서 덧글을 달다가 덧글이 좀 길어질 듯 하여, 간만에 포스팅을 하려고 합니다. ;)

'왜 XML을 Object로 파싱하여 그 데이터를 처리하고 이용하는 방법에 대해서 정리된 자료가 없는 것인가?' 라는 의문은 다른 각도로 접근해봐야 할 것 같습니다. '왜 방법이 없는가'에서 'XML을 Object로 파싱하지 않고 사용할 방법이 있는가?' 라는 것으로 말이죠. 단도직입적으로 말씀드리자면, XML 을 받은 것을 Object 로 변환해야할 필요성이 크지 않다는 것입니다(꼭 필요한 경우도 있겠습니다만). 게다가 XML 그대로 사용하는 것도 가능하고 HTTPService를 이용하면 XML을 Object로 변환 한 결과를 바로 받을 수도 있기 때문입니다.

그럼 먼저 HTTPService 를 이용하여 다양한 형태로 결과를 받는 방법에 대해서 알아보겠습니다.

HTTPService 의 resultFormat
HTTPService에는 resultFormat 이라는 속성이 존재합니다. 이는 HTTP를 호출하여 받은 결과값을 어떤 식으로 파싱할 것인지에 대해서 설정하는 속성인데, 아래의 표와 같이 총 6가지로 설정 가능합니다.

  object   ActionScript의 Object 들의 트리형식으로 XML 을 파싱하여 반환합니다. (기본값)
  array   ActionScript의 Object 들의 트리형식으로 XML 을 파싱하여 반환되나, 최상위의 Object가 Array가 아니라 새로 생성된 Array의 첫 번째 아이템이 됩니다. 만약 makeObjectsBindable 속성이 true로 설정되어 있을 경우 최상위 Array는 ArrayCollection으로 반환됩니다.
  xml   ActionScript 의 XMLNode Object로 이루어진 XML로 XML을 파싱하여 반환합니다.
  flashvars   ActionScript Object로 name과 value가 쌍으로 되어 있는(page=1) 텍스트를 파싱하여 반환합니다.
  text   받은 그대로를 text로 반환합니다.
  e4x   ECMAScript for XML(E4X)를 이용할 수 있는 ActionScript 의 XMLNode Object로 이루어진 XML로 XML을 파싱하여 반환합니다.

resultFormat를 object나 array로 설정하면 Object로 변환된 XML 데이터(서버측이 전달해준)를 전달받게 됩니다. 따로 파싱할 필요가 없는 것이죠. 물론 e4x나 xml로 설정하여  XML로 받아와서 사용할 수도 있습니다. 또는 특정 프로토콜에 의해 생성된 데이터라면 text로 설정하여 String 으로 받은 다음 프로토콜에 맞게 파싱하여 사용할 수도 있을 것입니다. (마치 구분자를 이용하여 소켓통신시 데이터 전달하는 것과 같이)

Object로 파싱하여 사용
rss 구조

rss 구조 (이미지 클릭하여 보세요.)

object로 resultFormat을 설정하여 데이터를 받아오는 예제를 한번 보겠습니다.
본 블로그의 rss를 읽어서 DataGrid에 넣어주는 예제인데, 우선 RSS 정보를 읽기 위해 구조를 먼저 보면 (우측이미지 참조) channel이라는 노드의 하위에 블로그의 정보들(타이틀, 주소, 이미지정보 등)이 있고 포스트의 정보는 item 이라는 노드들에 들어있습니다.

예제에서는 이 item 노드들을 가져다가 DataGrid에 넣어줄 것입니다.




위의 예제에서 resultHandler 메소드를 잠시 보시면 위에서 말한 item 노드들을 찾아서 DataGrid 에 넣어주는 구문을 보실 수 있으십니다. 위의 rss의 트리구조와 같이 Object 로 파싱되어 있기 때문에 동일하게 rss.channel.item 이런 식으로 item 을 읽어오고 있습니다. (하단 이미지 참조)

Object로 받아온 데이터

Object로 받아온 데이터



XML 그대로 사용하기
Flex의 DataGrid, Tree 와 같이 자주 사용하는 컴포넌트의 설계적 특성상 Object 혹은 XML 중 어떤 하나가 더 빠르다는 이야기는 둘째 치고라도 위의 예제같은 경우는 XML을 그대로 사용하시는 것이 오히려 개발 시에는 편할 수도 있습니다. 왜냐하면 resultHandler에 구현된 로직때문인데, resultFormat 속성을 e4x로 설정하여 결과로 받은 XML은 E4X를 사용할 수 있기 때문입니다. E4X에 대한 설명은 생략하도록 하겠습니다. 간단한 E4X에 대한 예제는 여기를 참고하세요.




resultFormat 속성을 e4x로 설정하고, resultHandler 메소드에서 e4x를 사용하여 간단하게 item을 DataGrid에 넣도록 구현하였습니다. 위의 예제와 비교하여 보셔도 크게 다른 것은 느끼지 못하실 것입니다. 오히려 위의 예제에서는 item 노드를 찾기가 훨씬 쉽게 되어있죠.

XML로 받아온 데이터

XML로 받아온 데이터



개발자 마다 스타일에 따라 차이는 있겠습니다만, 저의 경우는 HTTPService를 이용하는 어플의 경우 XML을 기반으로 데이터를 운용하고 있고, RemoteObject의 경우에는 VO를 기준으로 데이터를 운용하고 있습니다. 아무래도 HTTPService를 사용하는 경우는 서버와 주고받는 데이터를 XML기반으로 움직이는 것이 E4X 때문에 무지 편한 느낌이라.. ;^)

다른 분들은 어떻게 데이터를 운용하시는지 저도 궁금하네요. ;^) 트랙백 부탁드립니다.

신고
Creative Commons License
Creative Commons License
Favicon of http://blog.chanik.com BlogIcon 찬익 | 2009.10.30 16:22 신고 | PERMALINK | EDIT/DEL | REPLY
난 이 의견 반댈세
Favicon of http://blog.chanik.com BlogIcon 찬익 | 2009.10.30 17:07 신고 | PERMALINK | EDIT/DEL | REPLY
외부 서버로부터 받은 데이터를 가공하지 않고 그대로 쓰는 건, 결합도를 높이는 지름길..
(이 주제는 예전에 구글톡에서도 한 번 의견을 나누었던것 같은데.. -_-;)

물론, 테스트용 어플리케이션, 프로토타입 등에선 나도 저런식으로 그냥 E4X로 긁어다 쓰긴 하는데, 딱 그 범위만 넘어서도, 기능이 한두가지만 엮여도, 별도의 객체 구조를 가져가는게 사용하기 편함..

결합도 vs 간편성은 항상 논란의 여지가 많은 부분이긴 한데,
최근 몇 년간의 추세는, 간편성도 매우 중요하지만, 결합도가 우선시되어야, 또는 선행되어야 한다는 쪽 우세하니까..

또 내 경험으로도, XML을 가공하는데 드는 비용은 그리 크지 않은 편이고, 반면에 깨끗한 코드를 유지할 수 있다는 이점은 참 버리기 아까운 부분..
Favicon of http://blog.handkstory.net BlogIcon 제주소년 | 2009.10.31 14:35 신고 | PERMALINK | EDIT/DEL
아.. DB와의 종속성을 없애기 위해 ORM을 사용하는 원리와 비슷한건가요?ㅎ
하긴 외부 서버의 데이터를 바로 사용한다면 결합도가 크게 상승하겠네요..
Flex용 ORM이 나와도 좋을듯.. =ㅅ=ㅋ
Favicon of http://blog.chanik.com BlogIcon 찬익 | 2009.11.08 06:26 신고 | PERMALINK | EDIT/DEL
예, 비슷한 맥락입니다. :')
내용을 조금 더 보태자면, 결합도 문제는, 일반적으로 일정 기간이 지난 후에야 불거지는 성향이 있어, 개발 시에는 잘 고려하지 않는 부분이기도 합니다.
또한, 개발이 된 후 한참 뒤에야 발견되는 문제이기에, 오히려 심각성이 더 크기도 하지요. 이슈가 될 시점 즈음에는 코드를 잘 알고 있는 사람이 아무도 남아있지 않기 때문에.. ㅎㅎ
Favicon of http://minsangk.com BlogIcon 민상k | 2009.11.01 10:25 신고 | PERMALINK | EDIT/DEL | REPLY
저도 찬익님 의견처럼 결합도 때문에 Object-XML / XML-Object 간 변환 루틴을 힘겹게 만들었던 기억이 납니다.
그러나 결국 만들어보니 xml feeder 가 제 자신이라면 저런 결합도를 위한 노력이 아무 짝에도 쓸모 없음을 깨달았습니다 ㅋ
resultFormat 을 object 로 하는건 생각못했네요. resultFormat="e4x" 에 너무 익숙해져 있었나 봅니다.

좋은 글 잘 읽고 가요.
ps: 얼마전까지도 RSS 에서 찾아 들어오면 올블릿이 바로 떠서 주소를 찍어와야 했는데 오늘은 제대로 글이 뜨네요ㅋ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.11.08 10:48 신고 | PERMALINK | EDIT/DEL
제 블로그 rss 주소는 http://blog.flashplatform.kr/rss 입니다. 아마 올블릿쪽 rss 을 참조하고 계신듯 하네요 ;)
방문 감사합니다.
최재영 | 2009.11.03 10:04 신고 | PERMALINK | EDIT/DEL | REPLY
결합도가 높아진다는건 이해하기 힘든 부분인데...
어차피 화면 구성은 해당 Application 에 의존적인 부분이고,
재사용 가능한 컴포넌트에서는 ICollectionView 의 사용으로
결합도하곤 상관없는듯...
결론: 그냥 e4x 를 사용한다
Favicon of http://blog.chanik.com BlogIcon 찬익 | 2009.11.09 03:36 신고 | PERMALINK | EDIT/DEL
재영형 하이 ㅎㅎ
위에 언급한 결합도는 Service Architecture와의 coupling을 얘기한 것임.
예를 들면, RSS 리더라면 ATOM 등의 다른 포맷들도 지원해야하는데, 위 구조로는 추후에 포맷을 추가할 때마다 다소 진통이 있을 듯.
물론 국내의 기업용 어플리케이션들의 경우엔, '클라이언트를 위한 서버'를 개발하는 방식으로 클라이언트/서버 개발을 묶어서 진행되는 경우가 대부분이라 거부감이 없겠지만서도.. 이는 애초에 클라이언트/서버의 결합도를 100%로 놓고 시작하는거니까..

결론 : (아키텍처 상의) 컴포넌트 간 결합도에 대한 얘기였음.
Favicon of http://me2day.pe.kr BlogIcon 이태호 | 2009.11.03 21:06 신고 | PERMALINK | EDIT/DEL | REPLY
우선 뭐.. 저는. 위 최재영님 스타일과 같구요. 단, XML데이터를 별도의 class가 raw한 데이터(xml)를 머금고 있도록 하고, 밖에서는 일종의 factoring을 해다 쓰는 편입니다. 어찌보면 절충안이라고 할 수 있죠. 한마디로 1 xml에 대한 명세를 1 data container class 만 가지고 있게 합니다. 그냥 갠적인 스타일~
Favicon of http://blog.chanik.com BlogIcon 찬익 | 2009.11.08 10:41 신고 | PERMALINK | EDIT/DEL | REPLY
추가적으로, 코드의 가독성도 문제가 될 수 있다는 생각..
물론 문서화로도 해결 가능하나, 모든 가독성 문제는 문서화로 해결이 가능한 반면, 아무도 문서를 읽으려하지 않으므로..

추후 서비스의 운영/유지/보수 시, 위 RSS 리더의 경우, BlogPost 라는 Class를 두고 파싱하는 경우, 클래스명만으로도 대략의 로직을 이해할 수 있으나, rssData..item과 같은 경우, 해당 로직을 이해하기 위해서는 RSS의 Specification에 대해서도 추가적인 지식이 있어야 함. 물론, RSS는 널리 알려진 포맷이라 많은 개발자들이 내용을 숙지하고 있겠지만, FOAF이나 DOAC이라면 또 다를 것이고, XMPP나 또는 기업 내부에서만 사용하는 데이터 포맷이라면 더욱 그 차이가 심해짐.

단, 유지 비용과는 관계 없이 저럼한 개발 비용을 추구하는 국내 소프트웨어 개발 업계의 실정에는 본 답글 내용이 맞지 않을 수는 있다는 의견..
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.11.08 10:46 신고 | PERMALINK | EDIT/DEL
코드의 가독성의 문제에 대해서는 동의.
위의 RSS spec 을 숙지한 경우에는 상관 없겠으나 spec 을 모르는 상태에서의 저 코드는 대략난감이겠군.
Favicon of http://blog.chanik.com BlogIcon 찬익 | 2009.11.09 04:15 신고 | PERMALINK | EDIT/DEL
흠.. 난 결합도 문제가 더 큰 문제라고 생각하는데..
최재영 | 2009.11.09 08:58 신고 | PERMALINK | EDIT/DEL | REPLY
음.. 방금도 대화했지만
이미 사용데이터는 Collection류로 추상화되어 있는데다,
서버(혹은 데이터)와의 coupling point 는
소스 데이터의 변화가 있는 경우 어차피 다시 작성되어야 함.
VO 가 있는 경우 소스데이터가 변하면 VO 도 수정해야하고..
(가독성 차원에서는 잘 생각해봐야 함. 어느 쪽이 비용이 더 적은지)
coupling point 에서의 추상화 레벨이 높아질수록,
코드 복잡도가 증가할 수록 쓸데없는 버그발생률만 높이게 되는 듯...
차라리 다른 곳에서의 재사용성을 높이는게
훨씬 더 이득이라는 생각...
(결합도 낮추기는 재사용성을 위해서 생각한거 맞지?)
Favicon of http://blog.chanik.com BlogIcon 찬익 | 2009.11.15 17:01 신고 | PERMALINK | EDIT/DEL | REPLY
음.. 역시 방금 다시 대화했지만.. (메신저가 편리하긴 편리한 듯.. 로그 정리가 안되는게 흠이지만)

재사용성하고 일부 겹치는 부분이긴 한데, 일단 결합도는 Flexibility를 염두에 두고 이야기 한 것..
아직은 실력이 부족으로.. 재사용성의 이점을 누리진 못하고 있어서..

개발 단계, 또는 운영 단계에서 기능의 추가/수정이 빈번히 일어나는 경우,
코드의 깨끗함을 유지한 채 지속적으로 기능을 추가할 수 있는 구조..라면
아무래도 VO 쪽에 조금 더 점수를 줄 수 있을 것 같다는 생각.

또, 역시 메신저에서 이야기 했듯이, 하나의 예로,
외부에서 가져온 한 가지 데이터를 다수의 Visual Component에서 사용하는 경우,
만약 특정 데이터의 노드명이 변했다면 (ex. pubDate->publishDate)
데이터를 그대로 가져와서 쓰는 경우, 모든 Visual Component에서 해당 값을 바꿔줘야 하지만,
VO는 파서에서 단 한 번만 수정해주면 되니..

코드 복잡도 문제는 나중에 다시 토론..
Favicon of http://vulcan9.tistory.com BlogIcon vulcan | 2009.12.05 17:15 신고 | PERMALINK | EDIT/DEL | REPLY
저두 걘적으로다가 [외부데이터-VO 클래스] 이렇게 항상 짝으로 사용합니다. 외부데이터를 파싱해서 적절하게 변형시켜주눈 Adapter 역할을 VO 클래스에 맡기는거죠. 아직까지는 데이터가 변하더라도 Vo클래스 밖으로 변경사항이 전파되는 일은 없었던거 같네요. 홍수났을때 물길 막아주는 칸막이 역할 - VO에 한표!
카시우스 | 2010.02.03 17:49 신고 | PERMALINK | EDIT/DEL | REPLY
글잘보고있습니다 ㅋㅋㅋ 근데너무어려움... ㅠㅠ 회사괜히와써.....나에게너무많은걸바래 ㅠㅠ
marie | 2011.11.23 11:24 신고 | PERMALINK | EDIT/DEL | REPLY
flex로 .. 검색해서 블로그들왔는데 잘봤습니당~ 10%정도 알아 들었나?ㅠ _ㅠ 어려워요 엉엉 ㅠㅠ
gottdanken | 2014.11.18 18:00 | PERMALINK | EDIT/DEL | REPLY
관리자의 승인을 기다리고 있는 댓글입니다
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
2009.06.18 23:28
오랫만에 블로그로 인사드립니다. (__)

최근에 BMP 파일을 Flex 에서 읽어다 쓸 일이 생겼습니다.
Flex에서 이미지를 보여주는 컴포넌트인 Image 컴포넌트는 JPEG, PNG, GIF, SWF, SVG 같은 확장자만을 지원하고 BMP은 지원하고 있지 않기 때문에 BMP을 바로 넣을 수는 없습니다.(웹에서 BMP 를 쓰는 무식한 짓을 하면 안되겠죠.. ㅜㅜ 크기도 큰데 말입니다.)  JPG 파일이면 Image 컴포넌트에서 바로 읽어다 쓸 수 있을텐데 참 난감합니다.

그럼 방법이 없느냐? 아닙니다.
어떤 멋진 분께서 BMPDecoder 를 만들어놓으셨네요! :) 이미 FlexComponent 카페에서도 공유되었던 내용입니다.


위의 블로그에 들어가보시면 간단한 사용법에 대해서 나오고 BMPDecoder 라이브러리도 보입니다. 다만 BMPDecoder.as 파일이 다운로드가 안되네요. BMPDecoder.as 파일은 '삶의 향기'라는 블로그에  간단한 예제와 함께 업로드 되어 있으니 다운받아 사용하시면 되겠습니다.

간단하게 FP10 에서 추가된 FileReference의 load() 메소드를 이용해, BMP파일을 불러다  Image 컴포넌트에 넣는 예제를 만들어봤습니다.  예제 구성은 위에서 소개해드린 '삶의 향기' 블로그에 소개된 코드를 이용했습니다.


BMPDecoder.as 보기


BMP 파일을 선택하시면  Image 컴포넌트에 깔끔하게 출력되는 것을 보실 수 있습니다.

하지만 다음과 같은 버그가 존재합니다.
170픽셀 16bit BMP

170픽셀 16bit BMP

171픽셀 16bit BMP

171픽셀 16bit BMP 파일


위의 이미지에서 볼수 있는 것 처럼 BMP을 로드했을 때 이미지가 뒤틀려버리는 버그가 존재합니다.
왜 그럴까 한참을 고민했는데, 저희 팀장님이 힌트를 주시더군요. '윈도우어플에서도 비트맵 크기가 홀수일 경우 이미지가 저렇게 깨진다'고 말이죠. 실제로 테스트해보니 위와 같이 16bit이고 이미지의 너비가 홀수일 경우 위 처럼 이미지가 뒤틀려버리는 버그가 있습니다. (24bit, 32bit에서는 괜찮더군요)

이 버그에 해결책으로 저는 아래와 같이 decode() 메소드에서 이미지 너비를 결정해주는 로직 밑에 너비가 홀수일경우 강제로 1픽셀 늘리는 방법을 사용했습니다. 더 좋은 방법이 있을 것 같은데, 아시는 분은 알려주세요 :)


그럼 좋은 하루되세요!


예제파일 다운로드 :

신고
Creative Commons License
Creative Commons License
Favicon of http://hangunsworld.com BlogIcon Han Sanghun | 2009.06.20 08:25 신고 | PERMALINK | EDIT/DEL | REPLY
잘 뒤져보면 자주 쓰이는 파일 포멧들에 대한 인코더/디코더들이 많이 공개되어 있더라고요. 정말 좋은 세상인것 같아요. ^^
그렇지만 플래시 플레이어 성능의 한계상, 용량이 좀 큰 파일인 경우 스크립트 실행이 멈추는 문제가 종종 있더군요.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.06.20 14:25 신고 | PERMALINK | EDIT/DEL
정말 고마우신 분들이 많으십니다 ;)
예전에 JPEG의 EXIF 정보 읽어보려서 스펙뒤지고 했는데, 이미 만들어서 공개해두신 분이 계시더라는;;;;
용량 큰건 안습이죠... ㅜㅜ
Favicon of http://siking.tistory.com BlogIcon 윤연식 | 2009.06.23 20:53 신고 | PERMALINK | EDIT/DEL | REPLY
아하.. 그렇군요... 잘보고 갑니다 감사합니다...^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.06.24 11:24 신고 | PERMALINK | EDIT/DEL
생유~
차상욱 | 2009.06.24 11:43 신고 | PERMALINK | EDIT/DEL | REPLY
좋은 자료 감사합니다.
그런데 제가 flex3 빌더를 사용하는데 여기서는 FileReference 안에 load() 메소드가 지원되지 않더군요
혹시 위에 빌더가 flex 2인가요??
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.06.24 15:02 신고 | PERMALINK | EDIT/DEL
저는 Builder 3를 사용하고 있습니다.
기본적으로 Builder 3에서는 FP 9가 기본인데요, 위에 설명에서 보시면 알 수 있듯, Flash Player 10 에서 load() 메소드가 추가되었습니다.
FP10 의 API를 이용하기 위해서는 프로젝트 생성 후 프로젝트 속성에서 Flex Compiler 선택해보시면 하단에 HTML wrapper 가 있습니다. 거기에 요구되는 Flash Player 버전을 10.0.0 이상을 맞춰주시면 정상적으로 실행됩니다. ;)
나그네 | 2010.01.12 18:34 신고 | PERMALINK | EDIT/DEL | REPLY
1픽셀 늘리는 패치를 사용할 경우 에러가 나는 경우가 있습니다. 24비트 bmp 디코드 시에 decode24BitBMP() 메소드에서 "파일의 끝입니다" IOError 가 발생하더군요.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2010.03.04 08:36 신고 | PERMALINK | EDIT/DEL
1픽셀 늘리게 수정한 뒤에 테스트는 못 해봤는데 ^^;;;
감사합니다! ^^
Favicon of http://blog.jidolstar.com BlogIcon 지돌스타 | 2010.01.29 19:00 신고 | PERMALINK | EDIT/DEL | REPLY
좋은 정보야~~~~
Favicon of http://stemp.tistory.com BlogIcon 문정환 | 2010.03.03 12:51 신고 | PERMALINK | EDIT/DEL | REPLY
좋은정보가 많이 있네요 ^^
많은 도움이 될것같습니다 좋은정보 감사드립니다^^
| 2012.09.11 11:34 | PERMALINK | EDIT/DEL | REPLY
비밀댓글입니다
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
2009.03.27 15:36
안녕하세요? 검쉰입니다. 오랫만에 블로그 포스트로 인사드립니다.
그동안 티스토리에서 문제가 되었던 Flash Player 10에서 swf 로드가 안되던 문제가 해결이 되었네요. ;) 기존의 제 포스트들도 정상으로 보이고요. 이사하려다가 그 것또한 귀차니즘에 의해 좌절. ^ㅂ^; 아무튼 다시 오랫만에 글로 인사드려요. ;^)

흔히 자주 쓰시는 Flash로 만든 네비케이터 바 에서 메뉴정보를 외부의 XML 로 받아오는 경우와 같이 외부의 데이터를 읽어오는 과정에서 한글이 깨지는 경험을 한번쯤은 하셨을 겁니다. 이런 경우 커뮤니티에서 검색해보시면 System.useCodePage = true; 를 넣어라. 라는  답변을 많이 볼 수 있습니다. 심지여 이 것을 "한글 깨짐 방지 코드"라고 부르는 경우도 있더군요. 옛 속담에 '선무당이 사람잡는다'라는 이야기가 있습니다. 정확하게 이해하지 못하고 쓰게 되면 뒷일 감당하기 힘들게 되는 법!!. 왜 System.useCodePage = true; 를 넣으면 한글이 안꺠지는지 알아보도록 하겠습니다.

'EUC-KR' 이라고 많이 보셨을 겁니다. 한글을 정의한 캐릭터 셋(charset)입니다. 보통 한글 윈도우에서 제작한 파일은 'EUC-KR' 캐릭터 셋으로 저장되는 경우가 많습니다. 이 때 캐릭터 셋이란 글자들의 집합을 정의한 것이라고 생각하시면 됩니다. (보다 자세한 건 위키백과의 설명을 참조하시길 바랍니다.)
이러한 캐릭터 셋이 다르게 되어 있는 데이터를 읽어오게 되면 한글이 깨지게 되는데요, Flash 내부에서는 유니코드(UTF-8)를 기본으로 사용하기 때문입니다. 'EUC-KR'로 제작된 파일을 'UTF-8'로 읽었으니 당연히 서로 다른 캐릭터 셋을 사용하게 되므로 한글이 깨지게 되는 겁니다. 이러한 경우에 바로 System.useCodePage = true; 를 사용하면 한글이 깨어지지 않는데, 그 이유는 LiveDocs 에도 잘 나와있습니다.

useCodePage 속성  
useCodePage:Boolean  [읽기/쓰기]
언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0, Flash Player 9

Flash Player에서 외부 텍스트 파일을 해석하는 데 사용할 코드 페이지를 지정하는 부울 값입니다. 이 속성을 false로 설정하면 외부 텍스트 파일이 유니코드로 해석됩니다. 이러한 파일은 저장할 때 유니코드로 인코딩되어야 합니다. 이 속성을 true로 설정하면 외부 텍스트 파일이 Flash Player가 실행되는 운영 체제의 일반 코드 페이지로 해석됩니다. useCodePage의 기본값은 false입니다.

flash.display.Loader.load(), flash.net.URLLoader, flash.net.URLStream 또는 XML 클래스를 사용하여 외부 파일로 로드하는 텍스트를 Flash Player에서 유니코드로 인식하려면 이러한 파일을 유니코드로 저장해야 합니다. 외부 파일을 유니코드로 인코딩하려면 Windows 2000의 메모장과 같이 유니코드를 지원하는 응용 프로그램에서 파일을 저장해야 합니다.

유니코드로 인코딩되지 않은 외부 텍스트 파일을 로드하려면 useCodePagetrue로 설정합니다. 이렇게 하려면 데이터를 로드하는 SWF 파일의 첫 번째 프레임에 다음 코드를 첫 코드 행으로 추가합니다.

System.useCodePage = true;

이 코드를 추가하면 외부 텍스트가 Flash Player가 실행되고 있는 운영 체제의 일반 코드 페이지로 해석됩니다. 영문 Windows 운영 체제의 경우 대개 CP1252이고 한국어 운영 체제의 경우 EUC-KR입니다. 만약 useCodePagetrue로 설정하면 Flash Player 6 이상 버전은 Flash Player 5와 같은 방법으로 텍스트를 처리합니다. Flash Player 5에서는 모든 텍스트를 Flash Player 실행 운영 체제의 일반 코드 페이지를 사용하는 것으로 간주하고 처리했습니다.

useCodePagetrue로 설정하는 경우 플레이어가 실행되는 운영 체제의 일반 코드 페이지에 외부 텍스트 파일에 사용되는 문자가 포함되어 있어야 텍스트가 표시됩니다. 예를 들어 중국어 문자가 포함된 외부 텍스트 파일을 로드하는 경우 CP1252 코드 페이지에는 중국어 문자가 없으므로 이 코드 페이지를 사용하는 시스템에서 중국어 문자가 표시되지 않습니다.

모든 플랫폼에서 SWF 파일에 사용된 외부 텍스트 파일을 볼 수 있게 하려면 모든 외부 텍스트 파일을 유니코드로 인코딩하고 useCodePagefalse로 설정된 상태로 두어야 합니다. 이렇게 하면 Flash Player 6 이상에서 텍스트가 유니코드로 해석됩니다.


LiveDocs 에도 나와 있는 것 처럼 useCodePage 를 true로 설정하면 유니코드가 아닌 운영체제의 codepage로 해석이 되는 것이죠. 한글 윈도우의 기본 codePage는 'EUC-KR(51949)' 입니다. 그래서 외부의 'EUC-KR'로 되어있는 문서가 깨지지 않고 읽히게 되는 것입니다.

더 이상의 문제가 없어보입니다만,  실제 그렇지 않습니다. 해당 swf 를 로드하는 사용자가 외국어 OS를 사용하고 있다면 어떨까요? 열심히 만든 어플을 정식으로 런칭했는데, 그걸 외국의 한국인이 본다면???

이론적으로 보면 'EUC-KR'로 되어 있는 문서를 해당 OS의 codePage로 읽게 될텐데, 다른 언어의 OS는 codePage가 설마 'EUC-KR(51949)'일까요?? 위의 livedocs의 설명에도 나와 있듯, 다른 나라의 OS는 한국어 OS와 codePage가 다르다는 군요. (다른 나라 언어의 캐릭터 셋에 대해서 궁금하시다면 여기에서 확인해보시면 되겠습니다.)

실제로 그런지 확인을 위해서 아래와 같은 간단한 swf 파일을 만들어 봤습니다. 소스코드는 다음과 같습니다.
Flex 로 만든 App.

로드한 XML 파일



동일한 XML 파일을 'UTF-8', 'EUC-KR'로 각각 저장해서 useCodePage를 각각 false, true 로 설정해 영어, 일어 Windows 에서 IE로 읽어봤습니다.
클릭하셔서 확인해보세요.
Windows XP 영문판에서 swf 로드

Windows XP 영문판에서 swf 로드

Windows XP 일어판에서 swf 로드

Windows XP 일어판에서 swf 로드



UTF-8로 되어있는 파일은 어떤 OS든지 간에 잘 로드가 되고 있고, 'EUC-KR'로 되어있는 것을 System.useCodePage = true; 로 설정한 것은 한글이 여지없이 깨져보이는 것을 확인 할 수 있습니다. 외국에 서비스 할 생각이 없는 어플이라 하더라도, 기본적으로 'UTF-8'로 파일들을 저장해 놓으시면 한글문제를 잘 피해가실 수 있다고 생각합니다. 단순이 파일만이 아니라, HTTPService로 load 하는 데이터 또한 'UTF-8' 로 제작되어야 하겠죠?

하지만 할 수 없이 'EUC-KR'을 사용해야 할 때가 있습니다.네이버 카페의 경우 'EUC-KR'로 되어 있는데요, 이 것 때문에 useCodePage를 true로 설정할 수 는 없는 것 아니겠습니까? 이런 고민을 제가 존경하는 원강민님께서 블로그에 이미 포스팅 하신 적이 있습니다.
System.useCodePage 대신 이렇게.. 이 포스트를 참고 하시면 좋겠습니다.

간만에 글을 썼더니 꽤나 길어졌네요 :-) 다들 좋은 주말 되시길!
저작자 표시 비영리 변경 금지
신고
Creative Commons License
Creative Commons License
Favicon of http://okgosu.tistory.com BlogIcon okgosu | 2009.03.27 17:59 신고 | PERMALINK | EDIT/DEL | REPLY
컴백 하셨네요...
잘 보고 갑니다~

with okgosu (-..-)a 저도 굽신 굽신~
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.03.29 22:19 신고 | PERMALINK | EDIT/DEL
방문 감사합니다 ;)
Favicon of http://jidolstar.com/blog BlogIcon 지돌스타 | 2009.03.28 13:03 신고 | PERMALINK | EDIT/DEL | REPLY
좋아요~~~ 블로그의 세계로 돌아오신것을 환영합니다.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.03.29 22:20 신고 | PERMALINK | EDIT/DEL
다음 포스팅은 언제일 줄 모른다는... ㅎㅎ
박스농사 | 2009.03.30 09:39 신고 | PERMALINK | EDIT/DEL | REPLY
영어는 왜 다 잘나올까요?
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.03.30 09:43 신고 | PERMALINK | EDIT/DEL
비 영어권의 슬픔. =ㅁ=
Favicon of http://zommoc.tistory.com BlogIcon 좀모씨 | 2009.03.30 11:52 신고 | PERMALINK | EDIT/DEL | REPLY
많은 도움이 되었습니다^^

.....지식인 질문자 채택글 같은;;;;;;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.03.31 09:46 신고 | PERMALINK | EDIT/DEL
채택해주셔서 감사합니다?! ;)
Favicon of http://7zelkova.tistory.com BlogIcon 성주 | 2009.03.31 10:05 신고 | PERMALINK | EDIT/DEL | REPLY
좋은 글 잘 보고 갑니다.
저도 System.useCodePage = true; 로 해 놓은게 있는데 수정해야겠네요
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.03.31 22:06 신고 | PERMALINK | EDIT/DEL
방문 감사감사 ;)
Favicon of http://lovedev.tistory.com BlogIcon lovedev | 2009.03.31 20:47 신고 | PERMALINK | EDIT/DEL | REPLY
^^ 다시 돌아 오셨군요 ^^)/ 화이팅
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.03.31 22:06 신고 | PERMALINK | EDIT/DEL
열심히 달려 보겠습니다 ;)
모지씨 | 2009.04.01 09:34 신고 | PERMALINK | EDIT/DEL | REPLY
좋은글 잘보고 갑니다 : )
이름 입력하라는곳 없어서 한참 찾았는데... 새로고침하니까 나오는군요 :-(
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.01 16:03 신고 | PERMALINK | EDIT/DEL
로그인 하면 좀 편함 ㅋ
Favicon of http://zommoc.tistory.com BlogIcon 좀모씨 | 2009.04.03 17:49 신고 | PERMALINK | EDIT/DEL
그럴 때 Q 를 눌러보시면 새로운 세계가~
Favicon of http://hangunsworld.com BlogIcon Han Sanghun | 2009.04.02 18:02 신고 | PERMALINK | EDIT/DEL | REPLY
명쾌하게 정리해 주셨네요 ^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.02 18:10 신고 | PERMALINK | EDIT/DEL
방문 감사드려요~ ;)
데스티 좀 잘 부탁드립니다? ㅋ
퍼플린 | 2009.04.10 11:02 신고 | PERMALINK | EDIT/DEL | REPLY
굿잡~
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.10 18:47 신고 | PERMALINK | EDIT/DEL
오예~ ㅋ
Favicon of http://me2day.pe.kr BlogIcon 이태호 | 2009.05.27 13:49 신고 | PERMALINK | EDIT/DEL | REPLY
검쉰님 오랫만에 들어와봤는데
이런 피같은 정보가. ^^
저도 이런 문제가 있어 어찌어찌 그 원인이란거 알고 해결은 했는데 내막이 이러하군요.
잘봤습니다.^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.06.02 10:13 신고 | PERMALINK | EDIT/DEL
언제 얼굴 한번 봐야죠~ ㅎㅎ
Favicon of http://www.ddongkang.com BlogIcon 동강 | 2009.06.02 13:16 신고 | PERMALINK | EDIT/DEL | REPLY
딱 찾는 정보 였어요.ㅋㅋ 잘 보았습니다.ㅎ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.06.15 18:31 신고 | PERMALINK | EDIT/DEL
감사합니다 ;) ㅎㅎ
Favicon of http://stemp.tistory.com BlogIcon 문정환 | 2010.02.17 17:06 신고 | PERMALINK | EDIT/DEL | REPLY
System.useCodePage = true;에 대해서 찾아보다가 좋은글 읽고 갑니다 ~
유익한글 감사드립니다.
태우 | 2010.03.20 07:48 신고 | PERMALINK | EDIT/DEL | REPLY
감사합니다.
Favicon of http://blog.naver.com/yell301 BlogIcon 기절이 | 2010.09.11 13:02 신고 | PERMALINK | EDIT/DEL | REPLY
명쾌한 좋은 정보 감사합니다~도움 많이 되었습니다~링크 담아가겠습니다~감사합니다~^^
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
2009.02.18 11:03
안녕하세요? 검쉰입니다.
새로운 글 올라왔을까 싶어 가끔 접속해주시는 분들께 죄송하다는 말씀을 드려야겠네요.

현재 티스토리에서 Flash Player 10 사용지 SWF 파일을 로드하지 못하는 버그가 존재하고, 이를 언제까지 수정하겠다라는 대답은 전해듣지 못한 상태입니다. 단지 Flash Player 9를 사용하라라는 답변만 들었습니다.

제 글에는 필수적으로 예제 SWF 파일이 올라가는데, 이를 작성한 저조차도 Flash Player 10 사용하기때문에 볼 수 없어서 글을 작성하지 못하고 있었습니다. 물론 Firefox에는 Flash Switcher 라는 Flash Player 버전 변경 플러그인이 존재합니다만, IE에는 FP10 이 설치되어 있어 불편하기 그지 없습니다.
글을 읽어주시는 고마운 분들중에서도 SWF 파일이 나오지 않아 답답해 하시는 분들도 계시고요.

해서, 이와 같은 이유로 당분간 티스토리에 포스트는 중지해야될 것 같습니다. 개발자 특성상 뭔가 뜯어고치고 싶으나 못하는 티스토리에 대해서 답답한 면도 있었고 해서 설치형블로그로 갈까 싶기도 했습니다.  지돌스타님의 말씀으로는 바꿔 탄 워드프레스도 참 좋다.. 라시는데 이번기회에 옮겨탈까 싶기도 하고요. 아무튼 저도 고민을 좀 해보겠습니다.

모두들 좋은 하루 되세요~ ;)



ps. 기타 질문사항은 warkyman [at] gmail.com으로 보내주시면 빠른 시간안에 답변 드리도록 하겠습니다.
신고
Creative Commons License
Creative Commons License
Favicon of http://okgosu.tistoy.com BlogIcon okgosu | 2009.02.18 11:25 신고 | PERMALINK | EDIT/DEL | REPLY
그니깐 플래시플레이어10으로된 swf는 못 보여준다는 얘기죠?
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.02.18 13:09 신고 | PERMALINK | EDIT/DEL
FP10 이 설치된 사용자는 제 블로그(티스토리)에 swf 파일을 못본다는 겁니다. ^^;
Favicon of http://hangunsworld.com BlogIcon Han Sanghun | 2009.02.18 12:12 신고 | PERMALINK | EDIT/DEL | REPLY
저도 워드프레스 사용한지 좀 됐는데, 좋아요. 스킨이나 플러그인도 많고, 또 비교적 개방적이어서 입맛에 맞게 바꾸기도 쉬운 편이고요.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.02.18 13:09 신고 | PERMALINK | EDIT/DEL
심각하게 고려중입니다. ㅎㅎ
Favicon of http://egg.pe.kr BlogIcon egg | 2009.02.23 01:11 신고 | PERMALINK | EDIT/DEL | REPLY
주소 바뀌면 알려주세요. ^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.03.01 01:04 신고 | PERMALINK | EDIT/DEL
네~ 알겠습니다 ;)
Favicon of http://7zelkova.tistory.com BlogIcon 성주 | 2009.02.28 00:58 신고 | PERMALINK | EDIT/DEL | REPLY
아직 안옮기셨어요?
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.03.01 01:05 신고 | PERMALINK | EDIT/DEL
차일피일 하는 중. ㅎㅎ
Flash Platform 한글문제 공동대응팀쪽 블로그 만들면 거기다가 쓸까도 생각 중.. ㅋ
Favicon of http://butterguy.tistory.com BlogIcon 버터백통 | 2009.03.08 23:49 신고 | PERMALINK | EDIT/DEL | REPLY
뒤늦게 들어왔습니다~간간히 눈팅만 하다가..제 링크에 담으려고 왔는데..이사가시는 군요~ 주소나오면 바로 링크 달겠습니다~
전 미련하게 다 다시 컴파일해서 올렸는데..ㅜㅜ
화이팅이구요 티스토리는 각성하라!! ㅎㅎㅎ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.03.09 13:32 신고 | PERMALINK | EDIT/DEL
컴파일 하기는 싫고.. ;;;; =ㅁ=;;
Favicon of http://chanik.com BlogIcon 찬익 | 2009.03.09 12:16 신고 | PERMALINK | EDIT/DEL | REPLY
나도 블로그 하나 두려고 하는데,
서버 한대 임대할까?
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.03.09 13:33 신고 | PERMALINK | EDIT/DEL
흠.. 어쩌나~ ㅎ
Favicon of http://butterguy.tistory.com BlogIcon 버터백통 | 2009.03.20 10:59 신고 | PERMALINK | EDIT/DEL | REPLY
많이 바쁘신가봐요~ 아직 이사 못하셨네요~
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.03.27 15:08 신고 | PERMALINK | EDIT/DEL
티스토리에 버그가 해결되었네요 ㅎ
건욱 | 2009.03.26 16:12 신고 | PERMALINK | EDIT/DEL | REPLY
이뭐 링크따라 들어오다보니 여기까지 오는군...뭐하는 사람임?ㅋㅋㅋ
오랜만요~ 술한말 받아주센!
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.03.27 15:08 신고 | PERMALINK | EDIT/DEL
니가 술 안사고?
Favicon of http://www.i-rince.com BlogIcon rince | 2009.04.15 22:15 신고 | PERMALINK | EDIT/DEL | REPLY
그런 문제가 있는지도 모르고 있던 1인...
전 아는게 너무 없군요 ^^;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.16 14:16 신고 | PERMALINK | EDIT/DEL
모를수도 있는거죠 ^^;
어짜피 플래시 파일은 잘 안올리시니까
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
2008.11.07 17:38
안녕하세요! 검쉰입니다.

요즘 전혀 블로그에 글을 못쓰고 있습니다. 반성중이예요. ㅜㅜ
회사에서 하고 있는 프로젝트가 이제 막바지에 들어서면서 요구사항도 수정되고 정신이 없네요 ;-( 아마도 12월까지는 쭈욱~ 바쁠듯 합니다. 그래도 이제 좀 한숨 돌렸습니다. 게다가 덕분에 여러분께 알려드릴만한 것들을 또 알게되었네요.  좋은 글꺼리가 생겼습니다.

요즘은
Flex4U 라는 카페에서 ActionScript 3.0 강좌를 진행하고 있습니다.
지난달 10월 28일부터 매주 화,목 밤 11시에 저와 영구기님이 각자 화, 목에 강좌를 진행하고 있답니다.
교재는 ActionScript 3.0 Programming 을 사용하고, 영구기님은 Display,  저는 Non-Display 강의를 맡고 있어요. 
가끔 대타로 공룡님께서 해주시기로 했고요. ;)
이제 2주째 강의가 진행되었는데, 생각보다 준비해야 될 것이 많네요.
몸이 피곤한 날은 무슨 말한건지도 잘 모르겠고 ^^
강의 들어주시는 분들이 이쁘게 봐주셔서 재미있게 강의 중입니다.

관심있는 모든 분들이 다 들으셨으면 좋겠습니다만, 서버 최대 접속자 문제로 모든 분이 참여하실 수는 없고, 대신 아프리카로 동일시간에 중계중이니 관심있으신 분은 카페에 가입하셔서 접속 관련 정보 얻으셔서 같이 들으시면 좋겠습니다. ;) 이전 강의와 마찬가지로 현재 강의도 동영상으로 녹화하고 있으니 참고해보시는 것도 좋겠어요. (물론 일정 시간 후에 공개됩니다. ㅎ)

강좌때문에 고생해주시는 많은 분들이 계십니다.
  • 우선 이런 강좌를 계획하시고 진행해주시며 고생하시는 공룡(유성용)
  • 항상 뒤에서 버팀목이 되시며 매번 늦은 시간까지 강좌 동영상 편집하여 주시는 그날(이정칠)
  • 강의 프로그램을 짜주신 류(류종택)
  • 같이 강의하신다고 고생 많으신 영구기(원영국)(결혼축하드려요!! - 내일 부산에서 결혼하신답니다-)
  • 신입이라 바쁘실텐데, 매번 늦은 시간까지 동영상 녹화 백업해주시는 밥사마(박영관)
  • 여타 다른 많은 수강생 여러분 들~
좋은 분들 많이 알게되어 정말 영광입니다. ;) 앞으로도 잘 부탁드려요!


이건 잡담입니다만,
제 노트북 문제로 집에서 강의진행이 불가하여, 이정칠님 회사에서 강의를 매주 하고 있답니다.
매주 나가는 택시비가 아까워 자전거를 한대 사려고 하는데, 옆에 있는 스트라이다(Strida)라는 녀석이 맘에 들더군요. 그런데 가격이 가격인지라...;

접이식이 꼭 필요(골목많은 동네에 사는 처지라, 집안에 들여놓지 않으면 잃어버리기 쉽상)해서 찾던 도중에 찾은건데, 너무 비싸요.. ㄷㄷ 누구 저한테 중고라도 파실 분~~ ㅋ
아니면 유사한 것들이라도 사야되나... (가격이 절반쯤 하더군요 ㅋ)
다른 자전거도 봤는데, 눈에 들어오는 것들은 엄청 비싸더군요.....
브롬튼(brompton) 이라는 것은  더 비싸더란....;

아무튼 이런 것에도 고민중입니다. ㅎㅎ



회사 프로젝트와 강좌, 기타 제가 스스로 계획한 일들 떄문에 몸도 마음도 힘듭니다만, 그래도 열심히 해야겠죠?
다들 좋은 주말 보내시고(저는 좀 쉬고), 곧 좋은 포스트으로 찾아뵙겠습니다. ;) 
신고
Creative Commons License
Creative Commons License
눈송이 | 2008.11.08 07:26 신고 | PERMALINK | EDIT/DEL | REPLY
와~ 비쌀만 하네요~^^
무게 10kg.. 체인이 아닌 강화 고무벤드 같은... 기름칠 할 필요없고..
무지 끌리네요~ㅎㅎ
오도바이 타는데 팔구 전기 자전거 살까 생각중이었는데^^
갑자기 더 고민된다는..ㅎㅎ

강좌 감사히 잘 듣고 있습니다~ㅎㅎ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.11.10 23:41 신고 | PERMALINK | EDIT/DEL
날씨도 추워지는데 샀다가 타지않을 듯 하여 더더욱 고민중입니다.. ;;
Favicon of http://egg.pe.kr BlogIcon egg | 2008.11.08 09:13 신고 | PERMALINK | EDIT/DEL | REPLY
앗. 검쉰님 잘 지내고 계셨나요. ^^
정말 요즘 포스팅이 없으셔서 무척 바쁘시구나 하고 있었는데.
강좌도 하시고. ^^
여튼 주말 즐겁게 보내시고 감기 조심하세요. ^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.11.10 23:41 신고 | PERMALINK | EDIT/DEL
egg님도 감기조심하세요! ^^
언제 한번 신촌 놀러가야되는데 말이죠 ㅎ
Favicon of http://notepad.tistory.com BlogIcon 메모장 | 2008.11.10 10:08 신고 | PERMALINK | EDIT/DEL | REPLY
헉~ 검쉰님
검쉰님과 잘 안 어울리는 사이즈 같다는 생각이;;
너무 노여워는 마세요 ㅋㄷㅋㄷ;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.11.10 23:42 신고 | PERMALINK | EDIT/DEL
시끄러워요.. ㅋㅋㅋ
Favicon of http://www.jinhokim.com BlogIcon 찌노 | 2008.11.10 10:49 신고 | PERMALINK | EDIT/DEL | REPLY
스트라이다 와방 비싸죵..;
저도 사려다가 3천리에서 비슷한거 이지바이크라고 그넘타는데..; 단, 기어가 없어서 오르막은 초인의 다리힘이 필요하다는거 ;;;;;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.11.10 23:42 신고 | PERMALINK | EDIT/DEL
이지스트라는 넘을 살려다가 아직도 고민중;
Favicon of http://adnaru.tistory.com BlogIcon 희희덕 | 2008.11.11 00:37 신고 | PERMALINK | EDIT/DEL | REPLY
흐악~ 이게 얼마만에 보는 검쉰님의 새 포스트에요 ㅋㅋㅋ
언제 한번 밥같이 먹어요 ㅜㅜ! 저 배많이 고픕니다 ㅋㅋ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.11.11 19:30 신고 | PERMALINK | EDIT/DEL
네~ 많이 배고프시다니 양많은 곳으로 가야겠군요 :)
언제가 좋을까나.. ㅎㅎ
Favicon of http://7zelkova.tistory.com BlogIcon 성주 | 2008.11.11 11:31 신고 | PERMALINK | EDIT/DEL | REPLY
형님. 스트라이다는 180이상 장신들에게는 금기시되는 자전거에요.
오래타면 허리와 무릎에 무리가 옵니다.
무엇보다 뒤에서 보면 웃겨요
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.11.11 19:31 신고 | PERMALINK | EDIT/DEL
ㅜㅜ
웃길라나요?
Favicon of http://shinlucky.tistory.com BlogIcon shinlucky | 2008.11.27 17:53 신고 | PERMALINK | EDIT/DEL | REPLY
글들 잘 보고 갑니다^^~!
전문적 자료들이 많아 볼게 많네요.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.02 01:16 신고 | PERMALINK | EDIT/DEL
방문 감사드립니다 ;)
종종 놀러와주세요 ㅎ
Favicon of http://chanik.com BlogIcon 찬익 | 2008.12.03 14:44 신고 | PERMALINK | EDIT/DEL | REPLY
ㅎㅎ 고생하는구나
언능 렙업해서 같이 파티하자 ㅋㅋ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.06 23:12 신고 | PERMALINK | EDIT/DEL
파티 맺으면 계속 계속 나한테 힐줘야될듯. ㅋㅋ
서비짱 | 2008.12.12 13:14 신고 | PERMALINK | EDIT/DEL | REPLY
강의하시느라 늘 고생이 많아요~~^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.14 18:00 신고 | PERMALINK | EDIT/DEL
서비짱님도 곧.... ㅎㅎ
Favicon of http://thismoments.tistory.com BlogIcon isili | 2008.12.22 08:55 신고 | PERMALINK | EDIT/DEL | REPLY
안녕하세요. 좋은 글 잘 보고 있습니다 ^^
많은 참고가 되고 있습니다.ㅋ

아 그리고 ㅋ 저도 스트라이다에 관심이 많거든요 -0-;;ㅋ
친구들이 타고 다녀서 저도 살까했는데.. 가격이.. -_-;;

중국제 스트라이다도 있긴한데(엄청 싸더라구요) 근데 좀 위험하다고 하더라구요...

그래서 =_= 중고로 알아보고 있습니다.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.23 00:15 신고 | PERMALINK | EDIT/DEL
실타래쪽 분이신듯 ;)
스트라이다 결국 안샀습니다. 날씨가 추워져서 못타고 다니겠더라고요 ㅋㅋ
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
2008.09.28 22:30
단도직입적으로 말씀드리자면, new 키워드는 비용이 비쌉니다. 많은 리소스를 사용하게 된다는 말이죠. 물론 안쓸 수야 없죠. 새로운 객체를 생성하려면, 당연히 써야됩니다. 하지만, 사용하게 되면 그만큼의 연산과 메모리의 차지는 어쩔 수가 없습니다. 이런 문제들로 인해 좀 더 효율적인 객체의 사용을 위해 객체 풀(Object Pool) 을 구성하여 사용한다던가 하는 방법을 고민하게 되죠.
본 포스트에서는 객체 풀에 대해서 설명하지는 않겠습니다. 위에 링크로 걸어놓은 영구기님의 포스트를 참고하시도록 하시고요, 이번 포스트에서 제가 설명하고자 하는 것은 new 키워드를 사용하지 않고서도 사용할 수 있는 타입들에 대한 사용방법입니다.

데이터형태는 아래와 같이 2가지의 데이터형이 존재합니다.

Primitive Data Type : Boolean, int, uint, Null, Number, String, void
Complex Data Type : Object, Array, Date, Error, Function, RegExp, XML, XMLList


기본적인 데이터 형태(Primitive Date Type)의 변수선언시에는 물론 new 키워드는 사용하지 않습니다. 하지만 사용하지 못한다는 것은 아닙니다.
문자열을 저장할 때에 String 를 사용하게 됩니다. 이 String 형 변수는 다음과 같이 선언하게 됩니다.

하지만 아래와 같이 new String() 이라고 할 수도 있습니다.

int, uint, Number, Boolean 도 마찬가지로 new 키워드를 이용하여 변수에 할당해줄 수 있습니다. 허나 그렇게 사용하지는 마십시오. 기본적인 데이터 형태의 변수는 new 키워드를 사용하지 않아도 메모리가 할당되게 됩니다. 게다가 더 빠르고 간편합니다.

그래도 확인하고 넘어가는 차원에서 Number 형태의 변수의 할당에 대해 살짝 실험해보도록 하겠습니다. 아래의 코드를 보시면 Number 변수를 할당시에 new Number()를 사용하는 것과 직접 값을 입력하는 것에 대해서 속도를 비교해보고 있습니다. new 키워드를 사용하지 않는 것이 더 간편합니다. 그 아래에는 실제 결과물입니다. 테스트 버튼을 클릭하셔서 테스트 해보시기 바랍니다.







그렇다면 보다 복잡한 데이터 형태(Complex Data Type)의 변수를 선언시에는 new 키워드를 어떻게 쓰지 말라는 말일까요?
가장 먼저 많이 사용하는 Array에 대해서 말씀드려보겠습니다. 우선 Array를 선언시에 아래와 같이 선언할 수 있습니다.

이전 포스트에 살짝 언급하였습니다만, Array의 경우는 [] 를 이용하여 새로운 Array를 할당할 수 있습니다.

이와 비슷하게 Object를 할당할 때에도 new Object()  대신에 {} 를 이용하여 새로운 Object 할당이 가능합니다.
아래와 같은 선언을 다른 예제 소스코드에서 흔히 보셨을겁니다.

위에서 설명드린 것과 같이 Array 를 할당시에 [] 를 이용하고 Array 내부의 값을 {}를 이용하여 Object 형태로 정의하였습니다.
만약 [], {} 없이 선언하려고 한다면 아래와 같이 하여야할 것입니다. (물론 이렇게 사용할 일은 거의 없죠. 매우 극단적인 예랄까요? )


RegExp 같은 경우도 new 키워드를 사용하지 않고 선언 가능합니다.


XML 도 마찬가지입니다. 아래와 같이 흔히 사용하시고 있죠?
2번째 라인에 있는 것처럼 사용하실 일은 없을 듯합니다. 물론 String 형태의 XML 데이터라면 XML 로 변환하려면 2번째 라인처럼 해야겠죠.


마지막으로 위에서 말씀드린 Array와 Object 의 new 키워드 사용 유무에 대한 속도차 테스트를 해보고 마무리 짓겠습니다.
(RegExp 는 속도차가 거의 없어서 생략하였고,  XML은 쓸일이 없을 것 같아 생략하였습니다. ㅎ)

아래는 Array를 테스트한 코드입니다.

아래는 Object를 테스트한 코드입니다.




뭐 결론은 new Array() 대신에 [], new Object() 대신에 {} 를 사용하자는 것입니다. ;)
긴 글 읽어주셔서 감사합니다. ;) 다 읽으신 후에는 덧글 하나 써주시는 센스!!

참고자료 :
객체 풀[Object pool]을 이용해 보자.  - 영구기님 블로그
ActionScript3.0 너는 누구냐? - 엄진영님 Flex 챔피언 블로그

신고
Creative Commons License
Creative Commons License
Favicon of http://wooyaggo.tistory.com BlogIcon 우야꼬  | 2008.09.29 09:45 신고 | PERMALINK | EDIT/DEL | REPLY
Best Practice에서도 new 보다는 [] 나 {} 를 쓰라고 나와있더라구요.
좋은 내용 ㄳ~
(인액션 책에 추천사 넣으셨더라구요~ ㅋㅋ 서점가서 보고 왔는데 많이 듣던 이름이여서 내심 반가웠다능~)
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.09.29 13:12 신고 | PERMALINK | EDIT/DEL
제가 쓴 서평은 짤렸.. .ㅋ
매번 방문해주셔서 감사합니다. ;)
신준섭 | 2008.09.29 10:01 신고 | PERMALINK | EDIT/DEL | REPLY
항상 좋은 자료 잘보고갑니당.^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.09.29 13:12 신고 | PERMALINK | EDIT/DEL
네~ 좋은 하루 되세요~ ;)
Favicon of http://lovedev.tistory.com BlogIcon lovedev | 2008.09.29 11:01 신고 | PERMALINK | EDIT/DEL | REPLY
ObjectPool을 잘 사용하면 필시 좋은 건 사실입니다.
다만 GC에 대한 고민이 있어야 겠죠. GC관리를 풀관리자가 잘 해주면 관계는 없겠지만..
Java에서도 ObjectPool은 신중하게 사용되어야 한다고 논의 되고 있습니다.
때론 메모리에서 인스턴스화를 하지 않은 상태로 객체를 가지고 있는 자체가 문제가 될 때가 있습니다..그 상태야 말로 GC를 할 수도 없는
메모리 할당만 받고 있는 누수의 원인이 되기 때문입니다.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.09.29 13:13 신고 | PERMALINK | EDIT/DEL
매번 좋은 말씀 감사합니다. ;)
저도 ObjectPool 은 실제로 개발시에는 사용해본 적은 없네요 ^^;
보다 좋은 방법들이 고려되고 나타나기를 기대합니다 ;)
Favicon of http://bnufactory.com/ BlogIcon BNU | 2008.09.29 16:35 신고 | PERMALINK | EDIT/DEL | REPLY
자바스크립트에서도 Flex에서처럼 큰 폭은 아니지만 [], {}가 좀 더 빠르네요.
좋은 정보 감사합니다. :)
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.09.29 19:20 신고 | PERMALINK | EDIT/DEL
아무래도 리터럴이니까요 ;)
좋은 정보 되셨다니 기분 좋습니다 ㅎ
Favicon of http://www.jinhokim.com BlogIcon 찌노 | 2008.09.29 16:59 신고 | PERMALINK | EDIT/DEL | REPLY
무의식적으로 Array 선언시 [] 를 사용하고 있었는데 더 좋은방법이라니.. 왠지 모를 뿌듯함이.. ㅎ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.09.29 19:21 신고 | PERMALINK | EDIT/DEL
좋은 습관!! ㅎㅎ
Favicon of http://2rang.tistory.com BlogIcon 꽃녀 | 2008.09.30 00:09 신고 | PERMALINK | EDIT/DEL | REPLY
항상 연구하시는 쉰님..
자알~ 배우고 갑니당 ^^
new가 뽀대가 나긴 한데 ㅎㅎ
내일 보면 쌩까지 마셈~
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.09.30 09:40 신고 | PERMALINK | EDIT/DEL
오늘이군요!! ;)
좀 있다 뵙겠습니다 ㅎㅎ
Favicon of http://okgosu.tistory.com BlogIcon okgosu | 2008.09.30 01:19 신고 | PERMALINK | EDIT/DEL | REPLY
좋은 정보 잘 보고 갑니다...
담에 세미나 있으면 발표 의뢰해야겠습니다...^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.09.30 09:40 신고 | PERMALINK | EDIT/DEL
영광이죠! ;)
찾아주셔서 감사합니다 ㅎ
Favicon of http://blog.jidolstar.com BlogIcon 지돌스타 | 2008.09.30 10:19 신고 | PERMALINK | EDIT/DEL | REPLY
멋진 글입니다.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.10.01 12:52 신고 | PERMALINK | EDIT/DEL
지돌스타님이 더 멋지시면서! ㅋ
차차 | 2008.10.09 09:58 신고 | PERMALINK | EDIT/DEL | REPLY
좋은내용 감사해요.
센스있어 보이려고 덧글 남겨요ㅋㅋ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.10.09 13:32 신고 | PERMALINK | EDIT/DEL
센스 만점이신데요! ^-^
연월태생 | 2008.10.09 16:57 신고 | PERMALINK | EDIT/DEL | REPLY
좋은 글이에요~
코딩 습관을 바꾸던지 해야 할듯하네요 ㅎㅎ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.10.13 10:00 신고 | PERMALINK | EDIT/DEL
좋은 쪽으로 바꾸는 것이니 즐거운 마음으로 ㅎㅎ
수채화 | 2008.11.05 11:02 신고 | PERMALINK | EDIT/DEL | REPLY
좋은글 잘보고갑니다~
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.11.07 16:58 신고 | PERMALINK | EDIT/DEL
방문 감사드려요~ :)
덧글은 더 감사드립니다 ㅎ
Favicon of http://orochi77.egloos.com BlogIcon 꼬출든남자 | 2008.11.12 00:47 신고 | PERMALINK | EDIT/DEL | REPLY
아.. 정말 주옥같은 내용들이에요..
검쉰님 포스트 주욱 보고 공부해야게써요~ ^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.11.13 18:27 신고 | PERMALINK | EDIT/DEL
칭찬 감사합니다. ;)
Favicon of http://shinlucky.tistory.com BlogIcon shinlucky | 2008.11.27 17:54 신고 | PERMALINK | EDIT/DEL | REPLY
이거 플래쉬 viewer 10으로 바뀌면서 티스토리내에 올린 파일들은 안보이는거죠?
(다른 계정에서 링크한건 보이던데...)

안보임 ㅠ.ㅜ;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.02 01:17 신고 | PERMALINK | EDIT/DEL
제 회사 컴에 10이 설치되어 있는데 제대로 나옵니다 ^^;
뭔가 다른 문제인듯 싶네요;;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.06 23:13 신고 | PERMALINK | EDIT/DEL
다시 확인해보니 10 설치후에 나타나는 문제인듯 싶군요;
한동안 바빠서 정신없다가 이제서야 문제점을 인식했습니다;
김병건 | 2008.12.03 13:02 신고 | PERMALINK | EDIT/DEL | REPLY
좋은정보 감사합니다.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.03 14:28 신고 | PERMALINK | EDIT/DEL
방문 감사드려요~ :)
도움이 되셨으면 좋겠네요 ㅎ
모험가 | 2008.12.23 18:37 신고 | PERMALINK | EDIT/DEL | REPLY
좋은 글 잘 보고 갑니다~~ ㅋㅋㅋ 감사합니다.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.25 15:18 신고 | PERMALINK | EDIT/DEL
덧글감사합니다~ :)
Favicon of http://shallaazm.tistory.com BlogIcon shallaa | 2009.01.27 02:16 신고 | PERMALINK | EDIT/DEL | REPLY
저도 이제 기왕이면 싼거 애용해야 겠네요- ㅎ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.01.28 10:34 신고 | PERMALINK | EDIT/DEL
방문 감사드려요~ :)
어쩔수 없이 비싼거 써야될때도 있겠죠? ㅎ
Favicon of http://7zelkova.tistory.com BlogIcon 성주 | 2009.04.29 10:51 신고 | PERMALINK | EDIT/DEL | REPLY
역시 형님 블로그랑 강민형님 블로그에 제가 원하는 자료들이 많아요
Favicon of http://www.iruis.net BlogIcon ☆~ | 2009.08.17 14:39 신고 | PERMALINK | EDIT/DEL | REPLY
Nunber나 String, RegExp같은 불변 객체는 new를 생략시엔 미리 생성 된 객체 또는 풀링을 이용하여 컴파일러 차원에서 값이 대입(결과적으로 new는 되지만 한번만)만 되도록 변형 되지만 Array라든지 Object, XML객체와 같은 값이 변하는 객체마저도 new를 않쓰는 경우 빨라진다는 것이 신기하네요. 값이 변하는 객체마저 속도가 빨라지는 근본적인 이유는 연구할만한 내용이네요.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.08.19 10:42 신고 | PERMALINK | EDIT/DEL
연구하셔서 내용을 공유해주시면 많은 분들께 도움이 될 것이라 믿습니다 ;)
OneLove | 2009.09.03 16:18 신고 | PERMALINK | EDIT/DEL
전역메서드를 사용함으로..빠르겠죠
array = new Array() Array 클래스를 이용
array = [] 전역메서드를 이용
자세한 내용은 여기를 참조해보세요
http://help.adobe.com/ko_KR/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f3f.html#WS5b3ccc516d4fbf351e63e3d118a9b90204-7f1b
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
2008.08.07 14:21
Flex에는 크게 MXML과 ActionScript 로 구현되고 있는데, 내부적으로 MXML이 ActionScript 로 변환되어 SWF로 빌드 됩니다. MXML이 ActionScript 로 변환되는 것을 볼 수도 있는데요, keep-generated-actionscript 속성을 바꿔주면 됩니다. 속성 지정 방법은 시난님의 블로그에서 잘 정리해놓으셨습니다. (SliverLight의 경우는 Flex와 다르게 CS 코드가 XAML을 변환시키는 구조라고 하더군요)

실제로 간단하게 속성을 지정하여 변환을 하여 보면 참 새로운(이해 잘 안되는) 코드들이 마구 쏟아져나옵니다. 특정 MXML Application을 생성하면 관련된 파일 4개가 생성이 됩니다. (다른 것들은 보통 특정 스타일 지정 ActionScript 클래스이거나 속성 관련)

예를 들어 test.mxml 파일이 있다면 아래와 같이 생성이 되게 됩니다.
  • test-generated.as
  • test-interface.as
  • _test_FlexInit-generated.as
  • _test_mx_managers_System.as
본 포스트에서 살펴볼 것은 처음에 있는 xxx-generated.as 입니다. 이해를 쉽게 돕기 위해서 간단하게 MXML Application을 만들어보겠습니다. MXML.mxml 이라고 이름 붙혀보았습니다. (조악한 네이밍. ㅜㅜ)


위와 같이 MXML이 생성이 되었다면 아래와 같이 MXML-generated.as 가 생성이 됩니다.
(설명할 부분만 수록하도록 하겠습니다. - 길이가 길어서...)



MXML Application 이기 때문에 클래스는 Application 을 상속받고 있습니다. 그 바로 밑에 보면 흔히 쓰이지 않는 UIComponentDescriptor 타입의 변수가 보입니다.

UIComponentDescriptor 인스턴스는, 비주얼 컴퍼넌트의 인스턴스의 MXML 태그로 지정된 정보를 캡슐화합니다.

MXML 파일내의 대부분의 태그는, UIComponent object의 트리를 설명하는 것입니다. 예를 들어,<mx:Application> 태그는 UIComponent object를 나타내, 그 child containers와 컨트롤도 모두 UIComponent object입니다.

MXML 컴파일러는, 각각의 MXML 태그를 UIComponentDescriptor 인스턴스에 컴파일 합니다. 엄밀하게는, MXML 컴파일러는 ActionScript 데이터 구조를 자동 생성합니다. 이것은, UIComponentDescriptor object의 트리가 됩니다.

실행시에, Container 클래스의 createComponentsFromDescriptors() Methods는, 컨테이너의 childDescriptors 배열의 UIComponentDescriptor object내의 정보를 사용해, 컨테이너의 아이인 실제의 UIComponent object, 및 한층 더 깊은 자손을 작성합니다. 컨테이너의 property creationPolicy 의 값에 따라서는, 어플리케이션의 기동시에 컴퍼넌트의 일부가 표시될 때, 또는 어플리케이션의 개발자가 수동으로 createComponentsFromDescriptors() Methods를 호출했을 때에, 자손이 작성되는 일이 있습니다.

통상, UIComponentDescriptor 인스턴스를 스스로 작성할 것은 없습니다. Container 클래스의 childDescriptors 배열을 경유해, MXML 컴파일러가 자동 생성한 인스턴스에 액세스 할 수 있습니다.

출처 : flexdocs.kr


설 명이 좀 어려운데요, 다시 말해서 MXML로 정의된 정보를 모두 가지고 있게 된다는 것입니다. 내부적으로 트리형태로 자식 컴포넌트들도 다 가지고 있게 되는데, 실제로 UIComponentDescriptor 타입의 _documentDescriptor_ 변수가 Application 이고, 그 자식으로 추가된 Button 컴포넌트는 childDescriptors로 추가되어 있습니다. 물론 Button 컴포넌트도 UIComponentDescriptor 타입이 되죠. 만약 버튼에 자식 컴포넌트가 존재했다면 childDescriptors 에 정의되어 있을겁니다.

여기서 잠시 Application에 childDescriptors로 정의된 Button 을 다시 한번 보겠습니다.

여기서 잠시 보실 것은 Button에 설정해놓은 click 이벤트입니다. 클릭시에 "___MXML_Button1_click" 를 호출하도록 되어 있는데요, 해당 메소드로 가보면 제가 정의한 clickEventHandler 를 호출하도록 하고 있습니다.


특정 이벤트에 대해서 이벤트 핸들러(event handler)를 설정하게 되면 1. 해당 이벤트에 대해서 호출된 메소드를 생성하고 2. 그 메소드가 이벤트 핸들러를 호출하게 하는 방식입니다.

저는 이 구조를 처음 봤을 때 전부터 궁금했던 의문점이 하나 풀렸습니다.

위와 같은 코드가 있다고 할때에 이 것을 ActionScript 로는 어떻게 할까 하는 것이었습니다. ActionScript 로는 addEventListener 메소드를 이용해야 되는데, 핸들러 메소드에게 따로 파라미터를 던질 방법이 없었던 거죠. 커뮤니티에도 이와 같은 질문들이 가끔씩 올라왔기도 했고, 저도 상당히 궁금했었습니다.

살짝 감이 잡히시나요?

각 버튼의 이벤트 핸들러가 생성되고 그 이벤트 핸들러에서 위에서 지정한 clickEventHandler를 호출하게 됩니다. 참 난감하더군요 ;)

아무튼 뭐 살짝 MXML이 ActionScript 로 변환되는 과정에 대해 살짝 알아보았습니다. ;)
PopupManager 관련 글은 아직 준비중입니다.. ㅜㅜ



2008-08-20 본문 복구 완료
신고
Creative Commons License
Creative Commons License
Favicon of http://lostsin.tistory.com/ BlogIcon 시난 | 2008.08.07 14:34 신고 | PERMALINK | EDIT/DEL | REPLY
헉헉 굿잡!
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.08.25 01:14 신고 | PERMALINK | EDIT/DEL
어려워어려워;;
Favicon of http://wooyaggo.tistory.com BlogIcon wooyaggo | 2008.08.25 01:07 신고 | PERMALINK | EDIT/DEL | REPLY
지금은 플렉스까막눈이지만 나중에 플렉스 할때 꼭 참고하겠습니다!
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.08.25 01:14 신고 | PERMALINK | EDIT/DEL
감사합니다. ;)
다른 분들이 달아주신 덧글은 복구가 불가능(구글이 저장을....)해서 덧글이 없네요 ㅎㅎ
덧글 감사합니다 ;)
Favicon of http://thlife.net BlogIcon THLIFE.net | 2008.10.22 18:11 신고 | PERMALINK | EDIT/DEL | REPLY
항상 좋은 글 감사합니다!
Favicon of http://vulcan9.tistory.com BlogIcon vulcan | 2009.12.04 16:03 신고 | PERMALINK | EDIT/DEL | REPLY
벌써 1년이나 지난 포스트네요..역시 대단하심. mxml 코드 생성기를 만들려다 보니 저도 이벤트쪽 코드가 어떻게 as로 바뀔까하고 궁금해서 나름 정리해 보았습니다. 비슷한 주제일것 같아 트랙백으로 남김니다. 프로젝트 진행용으로 작성된거라 좀 불필요한 내용이 많네요--:;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.12.04 09:15 신고 | PERMALINK | EDIT/DEL
트랙백 고맙습니다. ;)
프로젝트 잘 진행되기를 기원합니다.
Favicon of http://spyrogira256.textcube.com BlogIcon 윤재진 | 2010.11.05 11:59 신고 | PERMALINK | EDIT/DEL | REPLY
댓글 감사합니다.
Favicon of http://xoul.kr BlogIcon xoul | 2011.07.29 23:40 신고 | PERMALINK | EDIT/DEL | REPLY
와 정말 좋은글 잘 보고 갑니다 ^^
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
2008.07.25 10:41
Flex/AIR Bible

Flex/AIR Bible

Flex / AIR Bible 이라는 책이 새로 나왔습니다. (7월 10일)
윤훈남씨가 저자이시고요, 도서출판 대림에서 나왔네요. 저자이신 윤훈남씨에 대해서 잠시 검색해보니 내공이 엄청난 고수이신 것 같습니다. ;)

저는 제 1회 Flex Camp에 서 이벤트로 이 책을 받았습니다. 잠깐 책 내용에 대해서 소개를 하자면, 플렉스 개발 2년차에 접어드는 저로써도 잊고 있었거나, 몰랐던 보다 심층적인 이야기가 많이 다루고 있어서 참 좋았습니다. 내용의 수준은 완전 초보개발자를 위한 것이라기 보다는, 타 언어 개발자분들이 Flex에 입문하실때 보시면 참 괜찮겠다는 생각이 들었습니다.

내용의 수준은 전반적으로 다 좋습니다만, 편집이 너무 아쉽습니다. 인덱스도 없거니와, 수 많은 오타... 내용상의 오류는 무시하고서라도 편집하시는 분들이 충분히 잡아내실 수 있었을 듯한 오타들이 너무 많이 눈에 보입니다.

인덱스가 없어서 차후에 다시 참고할 부분이 있어서 보려면 너무 찾기 힘들 것 같네요. 편집이 너무 아쉬운 책이네요. 내용은 더할나위 없이 좋은데 말이죠.  900페이지가 넘는데.. ㅜㅜ 표지 디자인은 깔끔하니 참 좋습니다.



Adobe FLEX 3 실전 트레이닝 북

Adobe FLEX 3 실전 트레이닝 북

Adobe의 공식 트레이닝 커리큘럼 교재인 『Adobe Flex 3 Training from the Source』의 한국어 판인 Adobe FLEX 3 실전 트레이닝 북의 출간 소식입니다.  지금 예약중이고요 7월 31일까지 예약가능하고, 8월 1일에 배송된다고 하네요.

제 가 처음 Flex를 공부하기 시작했을떄 'Adobe Flex 2 Training from the source' 라는 PDF 책을 가지고 공부를 했었습니다.  당시에 너무나도 생소했던 Flex에 대해서 이해를 하는데 큰 도움이 되었던 기억이 납니다. Flex 3용으로 나온 교재이니 더할나위 없이 좋은건 당연한 것이겠지만, 다만 난감한건 영어라는거!! 영어가 문제가 되더군요. 짧은 영어실력으로 허우적허우적..;  그러나 이번에 한국어판이 출간 되니 너무 기쁜 마음 감출 수가 없네요. 저도 한권 예약해야겠습니다. ;)

역자로 참여하신 분은 신호승씨, 정선우, 이원영 씨라고 소개되어 있네요. 자세한 소개는 위의 링크에서 역자소개를 보시면 되겠어요. 신호승씨 같은 경우는 워낙 유명하신 분이라 ;)

신고
Creative Commons License
Creative Commons License
Favicon of http://lostsin.tistory.com BlogIcon 시난 | 2008.07.25 21:20 신고 | PERMALINK | EDIT/DEL | REPLY
후움- 플렉스 책이 하나도 없는데..
진짜 괜찮은거 하나 살까..
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.07.25 23:29 신고 | PERMALINK | EDIT/DEL
시난 정도의 내공이라면 개념서가 필요하지 않을까? ㅎ
Favicon of http://egg.pe.kr BlogIcon egg | 2008.07.25 22:22 신고 | PERMALINK | EDIT/DEL | REPLY
우와. 저희도 얼마전부터 공부하려고 하는데 좋은 책 추천해주셔서 감사해요. ^^
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.07.25 23:30 신고 | PERMALINK | EDIT/DEL
책들이 많이 나와서 저도 좋습니다만,
다만 책값이 너무 많이 든다는게... ㅡㅡㅋ
정부는 IT개발자들에게 책값을 보조하라~ 보조하라~
Favicon of http://blog.empas.com/chaniks BlogIcon 찬익 | 2008.07.26 06:29 신고 | PERMALINK | EDIT/DEL | REPLY
헉, PDF..
전 하루라도 빨리 보려고 아마존에서 DHL로 주문했었는데,
그런 방법이 있었군요 ㅡ_ㅡ;

이제는 책장이 누렇게 바랜 채, 헌 책들과 함께 쌓여있네요. ㅎㅎ
사실 책 내용은 별로였어요. ㅎㅎ; 정말로 입문서..
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.07.26 11:39 신고 | PERMALINK | EDIT/DEL
처음 입문했던 저로써는 큰 도움이 되었죠 ㅋㅋ
아마존에서 PDF를 샀었는데. ㅎㅎ
Favicon of http://nooree.com BlogIcon 장창학 | 2008.07.26 14:20 신고 | PERMALINK | EDIT/DEL | REPLY
윤훈남씨 내공이 엄청 많으신 분이죠.. Flash 관련서도 몇권내셨고, 특히 AS3.0에서는 예전의 임종기씨 책 이 유일한 국내서였는데, 임종기씨 책은 너무 쉽게 풀어써서 레퍼런스용으로는 별로였는데 훈남씨 책(Flash CS3 ActionScript3.0 - 대림출판)이 좋더라고요.. 이분은 Director의 Lingo라는 언어에도 일가견이 있는 분입니다. 저도 저책 사볼까 하다가 망설이고만 있습니다. ㅎㅎ
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.07.26 14:54 신고 | PERMALINK | EDIT/DEL
링고~ 아하~ 살짝 알고만 있는건데 ㅎㅎ
세상에는 고수분들이 너무 많으신거 같아요 ㅎ
언제 반만큼이나 따라갈려나...;
Favicon of http://lovedev.tistory.com BlogIcon lovedev | 2008.07.29 08:52 신고 | PERMALINK | EDIT/DEL | REPLY
전에 말씀 하셨던 책들이 저 책들이군요.. ^^
저도 한 권 사서 봐야 겠네요..
좋은 하루 되세요~
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.07.29 10:08 신고 | PERMALINK | EDIT/DEL
네엡~ ㅎㅎ 좋은 하루 되세요~ ;)
Favicon of http://www.apollo9.net/blog BlogIcon 나야나 | 2008.07.29 17:27 신고 | PERMALINK | EDIT/DEL | REPLY
flex/air bible은 노하우바이블 하고 표지랑 폰트를 너무 똑같이 해놨더라구요-_-;
대림출판사 완전 실망이예요 ㅎㅎ
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.07.29 18:41 신고 | PERMALINK | EDIT/DEL
색만 다르고 거의 비슷... ㅎㅎ
디자인은 외주줬을텐데, 비슷한 톤으로 해달라고 요청이 있었나보죠 뭐 ㅋ
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
2008.06.21 09:57
Flex에서 팝업용도로 많이 쓰는 TitleWindow이라는 클래스가 있습니다.
TitleWindow 의 구현코드를 보신 분은 아시겠지만 TitleWindow 에는 그렇게 많은 코드가 있지는 않습니다. (오히려 뭐가 이렇게 없어! 할 정도) 저도 상당히 의아했습니다. 주석을 빼면 정말 몇줄 안되는 코드였기 떄문이죠.

그 이유는 TitleWindow는 Panel을 상속해서 만들었는데 실제 TitleWindow에서 필요한 닫기버튼은 이미 Panel에서 구현되어 있고 단지 보이지만 않는 상태이기 때문입니다. TitleWindow에서는 showCloseButton 라는 get/set 메소드로 닫기 버튼의 보여지는 유무만 설정하면 됩니다.

그런데 여기서 좀 재미있는 부분이 있습니다. Panel에서 닫기 버튼이 구현되어 있다면 Panel을 상속받으면 그 닫기버튼도 사용할 수 있을까요? 그냥은 안됩니다. 왜냐하면 닫기버튼이 보이거나 안보이도록 설정하는 변수인 _showCloseButton이 mx_internal 로 선언되어 있기 때문입니다.



그럼 이걸 어떻게 사용하면 될까요? TitleWindow의 showCloseButton 라는 get/set 메소드 를 보면 해답을 찾을 수 있습니다.



showCloseButton 속성의 코드가 좀 특이하죠?
TitleWindow 의 코드 상단에
use namespace mx_internal;
이라고 작성되어 있습니다. mx_internal 이라는 namespace를 사용하겠다는 것이지요. 이렇게 설정되면 showColoseButton 속성과 같이 mx_internal로 선언된 _showCloseButtion 변수에 접근하시면 됩니다.
return mx_internal::_showCloseButton;      //이렇게 해도 되고 또는,
return _showCloseButton;                       //이렇게만 해도 되긴 합니다
그렇다면 TitleWindow 는 Panel을 상속받았으니 그렇다 치고, 외부에서 Panel 객체의 _showCloseButton 변수를 바로 접근할 수는 없을까요? 안된다고요? 그럼 안되는데요! 안되면 제가 이 글을 쓸 이유가 없어집니다. ;) 바로 아래와 같이 가능합니다.


그래도 화면에 보이는 예제가 하나 필요하겠죠? 이번에는 TextArea로 예제를 하나 만들어보겠습니다.
(loveDev 블로그에서 아이디어 얻었습니다)
Flex에서 한글을 입력시에는 버벅이는 문제(천천히 타이핑 되는 문제)가 있었습니다. 이 문제를 해결하기 위해서 frame rate 를 올린다던가 하는 방법을 사용했었는데, Adobe Flex 공식사이트에 블로그에 올라온 글에서 어이없게도(?) TextField 의 alwaysShowSelection 속성을 true로 바꾸어주면 해결된다는 것이었습니다. 왜 그런지는 저도 정확하게는 잘 모르겠고... ^^;

아 무튼 Flex에서 한글 입력을 받는 TextInput, TextArea 등도 내부적으로 TextField를 상속한 UITextField 를 사용하고 있습니다. 그렇다면 이 UITextField 를 받아와야겠습니다만, 이게 또 골치아픕니다. TextArea나 TextInput 은 이 UITextField가 protected로 선언되어 있기때문에 외부에서 접근하는 것이 불가능합니다. 그래서 상속을 받아서 접근하던지, 아니면 여기와 같이 해결을 해야됩니다.

그러나 다행이도 이 TextField를 반환해주는 getTextField()라는 메소드가 존재합니다.


그렇다면 UITextField에 직접 접근하여 텍스트를 입력하려면 getTextField() 메소드를 사용하여야 할텐데요, 위의 코드에서 보셨다시피 mx_internal 로 선언되어있습니다. 이럴때는 위에서 설명드린데로 하면 되겠죠?

이 getTextField를 이용하여 TextArea에 한글입력을 개선한 예제입니다.
아래에 있는 TextArea에만 alwaysShowSelection의 값을  true로 설정을 해주었습니다. 위 아래 TextArea에 한글을 입력해보세요. ;)





유용한 정보 되셨길 바랍니다. ;) (오창훈님 감사합니다. ㅎ)


--- 파폭3에서 예제에 한글 입력이 안되네요.. ㅡㅡ; 왜 이러지;; 티스토리에 swf 업로드 하면 object 태그는 생성되는데 embed 태그가 없네요. 이래서 한글 입력이 안되었군요. ㅡㅡ; wmode 속성이 window 일때는 한글 입력이 됩니다. opaque나 transparent 속성은 한글 입력이 안됨..;
신고
Creative Commons License
Creative Commons License
Favicon of http://lovedev.tistory.com BlogIcon lovedev | 2008.06.21 00:30 신고 | PERMALINK | EDIT/DEL | REPLY
TextArea.alwaysShowSelection = true를 주기 위해서 ^^;;
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.06.21 08:50 신고 | PERMALINK | EDIT/DEL
아.. 생각해보니 그렇네요. ㅎㅎㅎ 예제를 바꿀까나... ㅋ
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.06.21 09:55 신고 | PERMALINK | EDIT/DEL
예제를 바꿨습니다 ㅋ
박스농사 | 2008.06.24 13:27 신고 | PERMALINK | EDIT/DEL | REPLY
센스있는글 감사합니다~~
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.06.24 15:29 신고 | PERMALINK | EDIT/DEL
ㅡㅡa
박스농사 | 2008.06.26 11:37 신고 | PERMALINK | EDIT/DEL | REPLY
좋아해줘도 반응이 시큰둥하네염?
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.06.26 13:14 신고 | PERMALINK | EDIT/DEL
ㅡㅡa
Favicon of http://singah.tistory.com BlogIcon 싱아 | 2008.07.02 10:53 신고 | PERMALINK | EDIT/DEL | REPLY
와 이포스트 소스코드 부분 어떻게 한거야?? 난 캡쳐 한건줄 알았더니 블럭지정 되는거 보니까 그게 또 아니네..

옆에 라인넘버도 나오고...
알려주삼 ~ ㅋㅋ
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.07.02 17:33 신고 | PERMALINK | EDIT/DEL
열이아빠님 블로그 http://koko8829.tistory.com/305 참고하셈 ㅋ
| 2008.08.21 14:25 | PERMALINK | EDIT/DEL | REPLY
비밀댓글입니다
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.08.21 23:37 신고 | PERMALINK | EDIT/DEL
아.. 그러네요 ^^;
여태 아무도 몰랐던;;
바로 수정했습니다. ㅎ
Favicon of http://orochi77.egloos.com BlogIcon 꼬출든남자 | 2009.04.08 17:51 신고 | PERMALINK | EDIT/DEL | REPLY
SDK 3.2덩가요?
파폭에서 한글 입력이 안되더라구요.. -ㅅ-
왜그런지좀 알려주세연~ ㅎㅎ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.08 18:29 신고 | PERMALINK | EDIT/DEL
파폭에서 wmode 가 transparent 일 경우 한글입력 안되는 버그가 있습니다. -ㅁ-;;

관련 버그 보고도 했는데,
다음 업그레이드때 고쳐주마.. 라고만 하네요.
https://bugs.adobe.com/jira/browse/FP-1627
Favicon of http://blog.daum.net/joshuajh BlogIcon 죠쉬 | 2009.04.17 15:45 신고 | PERMALINK | EDIT/DEL | REPLY
필요했던 내용이네욥
살이되고 피가 됩니다욧
(__)
꾸바닥!
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.04.18 22:00 신고 | PERMALINK | EDIT/DEL
도움이 되셨다니 다행입니다. ;)
핫산 | 2010.05.20 18:33 신고 | PERMALINK | EDIT/DEL | REPLY
아 항상 mx_internal게 먼가 하고 넘어갔었는데 덕분에 알게되었네요
감사합니다^^
| 2011.12.08 13:35 신고 | PERMALINK | EDIT/DEL | REPLY
어도비에서는 만들때 왜 mx_internal로 선언해서 만든건가요?
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
2008.06.09 20:22
ActionScript 3.0 에 명령문(statement)중에 with 를 아십니까?

사용법 
with (object:Object) {
  // 명령문(statement)
}

출처 : flexdocs.kr


아래의 코드는 dataXML의 XML 데이터를 읽어 해당 컴포넌트를 화면에 동적 추가하는 예제입니다.
 


위의 코드에서 addComponent() 메소드에 보면 각종 값들을 할당하는 구문이 있습니다.
target.속성 = 값;
이런 식인데, with를 쓰면 target이라고 계속 할당하지 않아도 됩니다. 아래는 with를 사용하여 addComponent() 메소드를 수정한 예제입니다.


가장 큰 목적은 작성해야 하는 코드의 양을 줄여준다는 겁니다. (확실히 테스트 해보지는 않았지만, with를 쓰면 극소량의 용량이 늘어나는 듯도 하네요.) 위의 수정된 addComponent() 메소드를 반영한 결과물입니다. 결론은 잘 된다는 거죠. ;)  코드의 양만 줄여줄뿐 헷갈리고 퍼포먼스도 떨어진다고 합니다. 그냥 이런 것이 있다는 것만 알아두시면 되겠네요.





참고 : ActionSctipt 3.0 의 Label 에 대해서 알아봅시다.
신고
Creative Commons License
Creative Commons License
고은혁 | 2008.06.10 12:40 신고 | PERMALINK | EDIT/DEL | REPLY
삭제시에는 무엇을 적용해야 되나요?
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.06.10 13:00 신고 | PERMALINK | EDIT/DEL
삭제시 라면, 삭제하기 버튼을 말씀하시는 것 같네요.
자식객체중에 canvas 만 모조리 지우는 형식으로 작업해놨습니다.
Favicon of http://lovedev.tistory.com BlogIcon ActionDev | 2008.06.11 13:34 신고 | PERMALINK | EDIT/DEL | REPLY
AS2.0때에 나왔던 이야기인데요 ^^ with문은 코드의 혼란을 야기할 소지가 많다는 단점이 있어서 사용을 권고하지 않는다라고 들었던 기억이 있네요 ^^;
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.06.11 16:36 신고 | PERMALINK | EDIT/DEL
아하~ 그렇군요. ㅎㅎ
브라이언님이 속도도 느리다고 하시더라구요. ㅎㅎ
전 AS3 을 첨 써봐서 신기해서 포스트 해봤습니다. ㅎㅎ
Favicon of http://www.apollo9.net/blog BlogIcon 나야나 | 2008.06.13 16:24 신고 | PERMALINK | EDIT/DEL | REPLY
AS 도움말에 with를 사용하면 퍼포먼스가 안좋아서 엥간하면 쓰지말라고 문구가 있었던걸로 기억이 살짝 나네요 ㅎㅎ;
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.06.13 18:23 신고 | PERMALINK | EDIT/DEL
왜 안좋은걸 만들었을까요... ㅎㅎ
무명소녀 | 2008.06.17 16:20 신고 | PERMALINK | EDIT/DEL | REPLY
with 문 있다는 거만 알고 뭔지는 잘 몰랐는데, 저런거였고나...
ㅎㅎㅎ 좀 많이 늦었지만, 잠시 놀러왔어요.
대문 사진에 있는 사람이 본인인거임?
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.06.18 13:54 신고 | PERMALINK | EDIT/DEL
오... 방문 감사합니다 ;)
본인인데, 얼굴이 안보이니 좀 낫죠? ㅋㅋㅋ
Favicon of http://lostsin.tistory.com BlogIcon 시난 | 2008.06.20 08:44 신고 | PERMALINK | EDIT/DEL | REPLY
퍼포먼스가 떨어져도.. form 같은데 유효성 체크할 땐 ..자바스크립트로 많이 썼었는데..
어딘가 쓸만하지 않을까용? ^^;
Favicon of http://warkyman.tistory.com BlogIcon 검쉰 | 2008.06.20 09:51 신고 | PERMALINK | EDIT/DEL
쓸만한 곳을 찾으면 다시 글을 올리겠습니다 ^^;
방문 감사합니다 ;)
연월태생 | 2008.10.09 17:02 신고 | PERMALINK | EDIT/DEL | REPLY
편하게 쓸수 있어 좋죠...
그런데 그냥 코딩할때 속성 일일이 치기가 귀찬아 그냥 사용하고 말죠..
델파이에서도 저 넘 있는데 잘 안쓰니...
그냥 묻어 버리죠.. ㅎㅎ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.10.13 10:01 신고 | PERMALINK | EDIT/DEL
아하. 그렇군요 ㅎㅎ
저도 좀 써볼랬더니 퍼포먼스 저하가 있다고 하시더라고요 ㅎㅎ
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
prev"" #1 #2 next