요즘 자주하는 실수인데요... 웹 개발을 할 때, Proxy를 통해서 개발 서버에 접속을 할 때가 있습니다. 저의 경우 Firefox를 주로 사용하기 때문에 Firefox의 SwitchProxy를 사용하는데요. 이렇게 접속한 후 Flash를 테스트해보면 정상적으로 동작하지 않는 경우가 있습니다.
그 이유는 바로 Flash가 IE의 Proxy 설정에 따라 동작하기 때문입니다. (가야님 고마워요~) 뭐이런게 다있어~ 하고 싶지만.. 어쩌겠습니까!!
Flash로 이미지 에디터를 만들어볼까 해서 몇 가지를 조사해봤습니다. (거의 메모 수준입니다. 틀린 부분있으면 얘기해주세요.)
MATSC로 개발할 것을 생각했기에 ActionScript 2.0 API를 찾아보았습니다. 그런데, adobe.com에는 마땅하게 전체를 살펴볼 API가 안보이더군요. Flex와 관련된 API는 쉽게 볼 수 있는데, ActionScript 2.0과 관련해서는 영 안보이네요. -_-;; 결국 brajeshwar.com에서 찾았습니다.
ActionScript에서는 이미지를 표현하기 위한 클래스 flash.display.BitmapData라는 클래스를 가지고 있더군요. BitmapData는 pixel데이터(32bit-integers)를 가지고 있어서 이미지를 표현할 수 있습니다. BitmapData에서 이미지 파일을 업로드할 수 없으므로 MovieClipLoader로 이미지를 MovieClip에 로딩한 다음에, 이를 캡쳐하는 방법으로 이미지를 BitmapData로 로딩할 수 있습니다.(MovieClip 생성관련 글)
_movieClipLoader = new MovieClipLoader(); _movieClipLoader.loadClip(imageFilteName, _holderMovieClip); ... _bitmap = new BitmapData(...); _bitmap.draw(_holderMovieClip);
그리고, flash.filters.* 를 살펴보면 BitmapData에 적용할 수 있는 필터들도 있습니다. Bevel, Bitmap, Blur, Glow 등의 필터들이 존재하고 있구요. flash.geom.* 을 이용하면 여러가지 도형을 이미지 위에 그릴 수도 있습니다. (필터와 관련된 Adobe의 문서들)
문제는, 이렇게 생성된 이미지를 서버로 전달하는 방법인데요. 마땅한 방법이 잘 안보이네요. 인터넷으로 검색을 해보니 다음과 같은 방법이 있다고 하더군요.
Peeter Goodman 씨가 만든 라이브러리로 img 또는 a 태그를 사용하면 툴팁을 만들 수 있는데, 굳이 따로 만든 이유는 다양한 텍스트 포멧을 줄 수 없기 때문이라고 합니다. 첫 인상은 깔끔한 느낌이네요. 다이얼로그가 작아서인지 느린 것 같지는 않습니다.(이전 글의 다이얼로그를 보면 늦기는 합니다. 일부러 늦게 한것인지는 모르겠습니다. 코드까지는 보지를 않아서 -_-;;)
간만에, SourceForge를 뒤지면서 Flash로 만든 오픈소스 차트를 찾아보다 XML/SWF Charts라는 제품을 발견하게 되었습니다. (사실은 ActionScript로 만든 애플리케이션 소스 보면서 공부해볼까하며 뒤지다가 샛길로 빠져버렸습니다. -_-;;)
Introduction
maani.us의 XML/SWF Charts는 상당히 재미있는 제품입니다. 다른 차트들과는 다르게, charts.swf를 embed/object 태그로 삽입한 다음에, 라이브러리의 위치와 차트의 데이터를 지정하는 xml파일 위치만 지정해주면 화면에 차트를 표시해 줄 수 있는 구조입니다.
License
기본라이센스는 몇가지 제약사항을 포함한 무료(Free License)입니다. 제약사항은 다음과 같습니다.
사용해본 결과 색지정만 잘해준다면 상당히 만족스러운 결과를 얻을 수 있을 것 같더군요. 3D차트까지 지원이 되니깐요. 게다가, 세부 색상이나 글꼴지정부터, 이미지 삽입이나 라인차트와 컬럼차트를 함께 그릴 수 있는 등 다양한 세부항목을 지정할 수 있게 해줍니다. (세부항목 지정 프로그램만 만든다면, Office 97정도의 차트를 만들 수도??? ^^;;)
지원되는 차트 목록은 다음과 같습니다. * Line * Column * Stacked column * Floating column * 3D column * Stacked 3D column * Parallel 3D column * Pie * 3D Pie * Bar * Stacked bar * Floating bar * Area * Stacked area * Candlestick * Scatter * Polar * Mixed * Composite * Joined
Flash 컴포넌트를 웹 페이지에 포함시켜서 배포할 때, 버전체크 문제는 자주 발생하는 작업입니다. 서버단에서도 처리할 수도 있지만 클라이언트단에서 JavaScript로도 체크를 할 수 있습니다.
이러한 작업을 위해서 Adobe에서 공식적으로 제공하는 툴이 Flash Player Detection Kit입니다. 이전까지는 문제 없이 사용했습니다만, 오늘 의문이 생기는 사건이 한가지 발생했습니다.
이전까지의 사용방식이 Flash의 Major 버전과 Minor 버전을 체크하는 케이스였는데, 오늘 발생한 문제는 9.0.28.0 이상의 버전만 지원이 된다는 독특한 경우 때문에 발생하였는데요.
Major 버전은 9 Minor 버전은 0 그렇다면... 28과 0의 의미는 무엇일까?
가장 먼저 Adobe의 Developer Center를 살펴보았는데요. 다음과 같은 문서를 찾을 수 있었습니다.
문서에 따르면, 28은 release 버전을 의미하며, 0은 revision 버전을 의미하게 됩니다. 그러나, Flash Player Detection Kit의 코드 DetectFlashVer() 메소드를 보면 세번째가 <revision>이 됩니다.
versionArray[2]의 값이 versionRevision이 된 것을 확인할 수 있습니다. Forum이나 게시판을 뒤져보기는 했지만 답을 찾지 못해서 Adobe에 메일로 문의를 하기는 했습니다만... 영어 실력이 좋지 않은 관계로 답장이 올런지는 미지수네요 ^^;;;;
사용자들이 Ctrl+C, Ctrl+V를 사용하여 웹의 컨텐츠를 복사해서 붙여넣고 싶어하는 기능은 웹 애플리케이션 개발에 기본적인 사항 중에 하나입니다. IE 및 Firefox의 경우에도 모두 지원합니다만, Firefox의 경우에는 configration file을 사용하여 Clipboard를 사용할 사이트에 clipboard 사용을 허락하는 과정을 한번 더 거쳐야 합니다.
당연히, 사용자들이 싫어할 수 밖에 없겠죠. 이를 해결하기 위해서 나온 방법이 웹에서 90% 이상 설치되어 있는 Flash의 Clipboard기능을 이용하는 것입니다. 사용자가 특정한 컨텐트를 선택한 다음 Ctrl+C를 눌렀을 때 선택한 내용을 읽어서 Flash의 System.setClipboard()에 설정하기만 하면, System의 Clipboard에는 컨텐트의 내용이 들어가게 되겠죠.