플래시에서 콤보박스 폰트 변경

플래시에서 ComboBox 컴포넌트를 사용했는데 클라이언트측의 요구로 콤보박스의 폰트를 변경해달라는 부탁이 왔다.

플래시 레퍼런스에는 이러한 내용들에 대해 기술된 것이 없어서 고민하다가 구글을 찾아보니 이미 외국에서 나와 똑같은 고민을 했던 사람이 있었다.

http://www.designscripting.com/2011/06/as3-combobox-font-embedding-problem-flash-cs5/

var arial:Font = new ArialFont();

var myFormatBlack:TextFormat = new TextFormat();
myFormatBlack.font = arial.fontName;
myFormatBlack.size = 18;
myFormatBlack.color = 0x000000;

myComboBox.textField.setStyle("embedFonts", true);
myComboBox.textField.setStyle("textFormat", myFormatBlack);
myComboBox.dropdown.setRendererStyle("embedFonts", true);
myComboBox.dropdown.setRendererStyle("textFormat", myFormatBlack);
myComboBox.setStyle("embedFonts", true);
myComboBox.setStyle("textFormat", myFormatBlack);
myComboBox.prompt = "Select State";
myComboBox.width = 248;
myComboBox.height = 25;
myComboBox.x = 100
myComboBox.y = 100
myComboBox.setStyle("textPadding", 1);

위의 코드를 참조하여 콤보박스의 폰트를 바꿀 수 있었다. 중요한 것은 라이브러리에서 폰트를 미리 등록해놔야 한다.

사용할 폰트를 임베디드 한 후 라이브러리에서 폰트를 선택한 후 properties를 선택해서 액션스크립트에서 사용할 수 있도록 체크하고 이름을 지정한다. 내 경우에는 윤고딕 같은 폰트는 알아보기 쉽게 ‘Yoon’이라는 이름으로 사용했다. 위의 코드에서는 폰트명을 ‘ArialFont’라고 지정하고 있다. 이것이 되지 않으면 저 코드도 아무 소용이 없다.

폰트를 임베디드했으면 콤보박스의 각 부위에 setStyle과 setRendererStyle 메서드를 이용하여 적용한다.

이 두가지만 잘 이해했다면 콤보박스에 폰트를 적용하는 것은 어렵지 않을 것 같다.

XML에서 캐리지리턴(엔터) 문제

플래시에서 다음과 같은 코드를 입력했을 때 캐리지리턴(=엔터)가 한번이 아닌 두번이 입력되는 현상이 발생한다.

var xml:XML =

test11
줄바꿈


trace("=========================================");
trace(xml.child("title"));
trace("=========================================");
trace(xml.child("title").split("r").join(""));
trace("=========================================");

원래 XML의 내용대로라면 한줄 내려서 입력되어야하지만 실제적으로는 빈 행이 두줄이 입력된다는 것. 어도비의 레퍼런스에서 XML, XMLList 부분을 아무리 찾아봐도 이에 대한 내용이 없다. 플래시의 버그인가..? 하는 생각을 하면서 구글신에게 물어본 결과 다음과 같은 글을 찾았다.

http://stackoverflow.com/questions/570656/as3-xml-and-line-spacing-problem

글 내용인 즉슨, line break에서 Carriage Return과 Line Feed가 같이 입력되므로 rn 이렇게 입력된다는 것이었다. 그러므로 r로 입력된 부분을 찾아서 지우라는 말. String 클래스의 split 메서드를 써서 했다길래 나도 split 메서드로 해결 완료. 잘 된다. split 보다는 replace 메서드를 쓰는게 더 나을듯하다.

밑에 리플들을 보면 아마 서버 플랫폼에 따라 차이가 있다는 것 같은데 이것은 내가 윈도우서버를 가지고 있지 않으므로 패쓰.

Eclipse 3.6 Helios Error

플래시 빌더를 4.5 버전으로 새로깔고 이것저것 플러그인을 설치하던 중 예상치 못한 에러를 만났다.

Redmine-connector를 인스톨하다가 난 오류인데 도저히 이 메시지를 보고 해결을 못하겠다. glassfish, jms라는 플러그인을 검색해봤으나 실패….

An error occurred while collecting items to be installed
session context was:(profile=epp.package.java, phase=org.eclipse.equinox.internal.p2.engine.phases.Collect, operand=, action=).
No repository found containing: osgi.bundle,javax.mail.glassfish,1.4.1.v201005082020
No repository found containing: osgi.bundle,org.eclipse.equinox.log,1.2.100.v20100503
No repository found containing: osgi.bundle,org.eclipse.net4j.jms.api,3.0.0.v20110215-1551

도대체 이 오류가 뭔질 모르겠다. 다른 플러그인을 깔면서도 오류 때문에 깔리질 않아서 Subclipse를 빼고는 제대로 플러그인을 쓸수가 없는 상태. 이클립스 3.6 헬리오스 버전이 문제가 좀 많은 것 같다. 구글링을 해보며 이런 저런 메시지들을 검색해본 결과 헬리오스 버전의 버그인 것도 있고… 하여간 골치 아프다.

Adobe Refresh 2011

얼마전 Adobe Refresh 2011 행사를 다녀왔다. 후기라고 하기에도 뭐하고… 그냥 잊지 않기 위해 써놓는 포스트.

이 포스트는 쓸 내용이 많아 차차 내용을 정리해가며 업데이트해야 할 것 같다.

코엑스에서 열린 이 행사를 위해 아침 일찍 차를 끌고 출발. 시간에 맞춰 적당히 도착했다. 탄천주차장에 차를 대고 코엑스까지 걸어갔다. 행사장 앞에서 등록을 하고 통역장비와 투표장비를 받아서 자리에 앉았다. 생각보다 사람은 많았다.

세션은 여섯가지 정도되었다. 전체적으로 보면 어도비는 모바일 플랫폼에 주력하려한다는 느낌이 강했다. 사실 이번 행사도 결국은 모바일에 대한 내용이 거의 주를 이뤘다해도 과언이 아닐것 같다.

세션이 진행되기전 간단한 키노트 시간이 있었다. 세션 발표자들에 대한 소개와 간단한 인삿말 정도였다.

첫번째 세션에서는 멀티디바이스 스크린 즉, 모바일 디바이스에 대한 내용이었다. 지금의 모바일시장에 대한 전망, 그에 대한 어도비의 대처 등에 대한 내용으로 이뤄졌다. 흔히들 아이폰, 안드로이드쪽만 생각하는데 타블렛 디바이스, 스마트TV 등도 고려해야 할 것 같다. 어도비는 다양한 기기들을 지원하기 위해 Flash 플랫폼과 AIR 플랫폼을 지원하고 있고 이 두가지 기술로 대부분의 디바이스들을 지원할 수 있다는 말이었다.

두번째 세션에서는 플래시의 미래에 대한 내용이었다.

세번째 세션은 HTML5와 Open Web에 대한 내용이어다.

네번째 세션은 어도비 타운홀 시간이었다.

다섯번째 세션은 어도비 디지털 퍼블리싱 솔루션에 대한 내용이었다.

여섯번째 세션은 플래시빌더의 미래에 대한 내용이었다.

일곱번째 세션은 예고편시간으로 어도비가 개발하고 있는 기술들에 대한 내용이었다. 어도비의 개발자들이 만든 새로운 기술들에 대한 약간의 맛배기 타임이랄까?

이것은 타블렛 디바이스에서 사용하기 위한 솔루션이었다. 컴퓨터와 타블렛을 동시에 가지고 있을 때 타블렛 화면을 컴퓨터의 화면에서 더 확장시키는 거보다는 차라리 다른 용도로 쓰이는게 낫다고 생각했다고 한다. 사실 나도 여기에는 동의. 두 디바이스가 있을 때 화면을 확장하는 식으로 쓴다는건 너무 비효율적이고 낭비니까. 화면은 단지 모니터를 업그레이드하는 것만으로도 충분하다. 새 디바이스가 있다면 그 기능을 활용하는게 더 낫다고 본다. 어찌됐던 이 프로그램은 일종의 ‘디지털 팔레트’라고 보면 될것 같다. 인터페이스는 마치 Alias/Wavefront의 SketchBook을 생각나게 한다. Sketchbook에서 이미 한번 놀래서 그런지 신선하다고 생각하진 않았는데 붓을 물에 빠는 장면이 재미있었다. 어도비가 디지털 기기에서 아날로그적 느낌을 제일 잘 해석한 부분인거 같다.

플래시 플렉스 개발자를 위한 액션스크립트 3.0 디자인 패턴

플래시/플렉스 개발자를 위한 액션스크립트 3.0 디자인 패턴
국내도서>컴퓨터/인터넷
저자 : 조이 로트(Joey Lott),대니 패터슨 / 정호연역
출판 : 에이콘출판사 2008.10.28

상세보기

최근에 구입한 액션스크립트 관련 도서.

일하면 할수록 설계가 중요하다는 생각이 든다.

본격적으로 AS3 클래스로 짜면서부터는 신나게 만들다가도 왜 이렇게 만들고 있지? 하는 생각에 코드 지워버리기를 수차례…

좀더 체계화되고 효율적인 코드를 만들어야겠다는 생각이 들었다. 그래서 산게 이 책.

읽어보니 음… 내가 100% 이해하기에는 아직 모자란 감이 있는 것 같다. 지금까지 샀던 모든 플래시/액션스크립트 책중에 제일 공부의 규모가 큰 책인듯. 천천히 읽다보면 언젠간 다 이해되겠지?

밤마다 자기전 조금씩 읽어보고 있다.

서평을 보니 오타가 꽤 많다고 하니 무턱대고 읽지는 말아야할듯.

Flash Builder 4 간단한 사용기

Flash 자체에서 액션스크립트 코딩을 줄창해오다가 어느 순간부터인가 코드양이 점점 많아지면서부터 힘들어졌었다.

그래서 바꾸게 된 것이 바로 Flash Develop
Flash Develop으로 잘 써왔었고 무료임에도 정말 좋은 프로그램이라고 생각함. 하지만 기능적으로 아주 약간씩 부족한게 있었고(특히나 나한테는 Subversion과 연동하는 기능이 필요했는데 이게 안되는게 너무 불편했다.) 그럴때마다 플러그인이 있나 없나 찾아헤메야하는등의 불편함도 있었고 더불어 플래시와 연동하면서 작업할 수 있긴하지만 뭔가 좀 부족한 느낌?
그러다가 최근에 다른 툴을 찾아봤는데 물망에 오른게 Adobe의 Flash Builder 4와 PowerFlasher의 FDT3 두개였다. FB4의 경우에는 플래시 작업자들 사이에서 상당히 실망스럽다는 반응이 많았고 FDT3쪽은 상당히 괜찮다는 평이 많았다.
그래서 FDT3를 선택하고 다운로드… 해서 써보니 이런… 이클립스 인터페이스에 적응이 안된다. 더군다나 가격도 프로버전은 60만원선. 음… 게다가 FDT3는 코드작업에는 좋은 기능이 많았지만 정작 플래시와 연동이 안되어서 코딩 따로 컴파일 따로 하면서 봐야하는 귀찮음이 있을 것 같았다.
그래서 지우고 다시 Flash Builder 4를 설치.
Flash Builder 4
역시나 이클립스 기반이어서 인터페이스에 적응이 잘 안되더라. 아 그냥 다시 FlashDevelop에서 작업하고 싶다…라는 생각이 자꾸 들었지만 꾹 참고 현재까지 2주일 넘게 사용 중… 이제 살짝씩 적응된다.
FlashDevelop에 비해서는 아무래도 에디터 자체적으로는 좀더 불편한 것 같다. 예를 들어 자동완성 기능이 너무 부족하게 느껴졌다. ‘private function test():void’라는 문장을 입력해야할 경우에 FlashDevelop의 경우에는 ‘pri’만 입력해도 private를 입력할 것이냐고 물어보고 ‘fu’만 입력해도 function을 입력할 것이냐고 물어본다. 근데 FB4에서는 이게 안된다. ㅡㅡ;; 무지 불편하다.
물론 이클립스 기반 툴에서 저정도야 설정만 해주면 될것 같지만 문제는 FlashDevelop은 아무런 설정 없이 설치한 그대로도 저 기능으 지원하고 FB4는 사용자가 다시 만져줘야한다는 점.
그리고 코드 컬러링도 FlashDevelop이 좀더 나은 것 같다.
여튼 몇몇가지 불편함이 있긴했다.
장점은… 수많은 플러그인 시스템. 특히나 내가 원하던 SVN 플러그인이 있어서 좋다. 파일을 수정하고 SVN에 올리려고 할때 귀찮은 윈도우탐색기를 켜서 거북이SVN으로 올릴 필요가 없이 FB4 안에서 다 된다
또.. 플래시와의 연계 기능. FB4의 예전 버전인 Adobe Flex Builder 3에는 이러한 기능이 없어서 Flex Builder에서 코드를 작성하고 Flash에 와서 컴파일하는 수고를 해야했는데 이번에는 FB4에서 자체적으로 지원한다. FB4에서 파일을 수정하고 플래시에서 컴파일할 수 있도록 미리 버튼이 준비되어있음. 그리고 플래시에서 액션스크립트 파일을 수정하려고 하면 FB4에서 열겠냐고 물어봐준다. 이 기능 참 편리한듯. FlashDevelop에서도 연계하며 쓸수 있긴하지만 이정도로 연계가 되진 않기 때문이다.
잠깐 테스트를 해본 결과 FB4로 바꾸는게 좋을 것 같다는 것이 내 판단. 아직도 FB4에 대해서는 모르는 부분이 더 많은데 음……. 전체적으로 놓고 봤을 때 FlashDevelop은 ‘가볍고 빠르고 간단함. 단 연계플레이나 고난도 작업을 하기에는 힘들어보임’이 내 결정.
이클립스 IDE에 잘 적응이 안되지만 그래도 처음 접할 때보다는 많이 나아진 것 같다. 좀더 쓰다보면 더 적응 되겠지. 그런데 아직도 FB4에서의 ‘Project’라는 개념을 잘 이해 못하겠다. 휴….

FLV / F4V 를 위한 MIME 타입 설정

일을 하다보면 플래시로 동영상 플레이어를 만들 일이 있는데…

가끔은 동영상 파일을 제대로 올려놓고 액션스크립트가 틀린게 없는데도 재생이 안될때가 있다.

이럴 때 제일 먼저 살펴봐야하는건 웹서버의 MIME 타입이다.

이건 플래시 작업자가 해결 할 수 없는 부분이기 때문에 서버관리자에게 요청해야한다.

플래시 비디오 파일은 FLV와 F4V라는 두가지 포맷이 있다.

웹서버 프로그램(Apache나 IIS 등등)에서 MIME 타입을 지정해줄 때 이렇게 지정해주면 된다.

FLV에 대한 MIME 타입 :: flv-application/octet-stream
F4V에 대한 MIME 타입 :: video/mp4

물론 설정한 후에는 웹서버 재시작은 필수.

플래시에서 http-auth 방식 인증처리방법

플래시에서 http-auth 방식 인증처리방법

// http BASIC 인증 코드
http://www.abdulqabiz.com/blog/archives/flash_and_actionscript/http_authentica.php

var request:URLRequest = new URLRequest();

//call listsubs method of Bloglines
request.url = "";

var credentials:String = Base64.encode(email + ":" + password);
//create HTTP Auth request header
var authHeader:URLRequestHeader = new URLRequestHeader("Authorization","Basic " + credentials);
//add the header to request
request.requestHeaders.push(authHeader);
//make the request.
loader.load(request);


			

https 접근 문제 해결방법

 

플래시에서 SSL이 적용된 경로로 접근하려할때 접근이 되지 않는데 이럴 경우 다음 코드를 HTML에 삽입함으로써 해결할 수 있다.




안타까운건 이 코드를 이용해 ‘웹’에서는 해결할 수 있지만 AIR에서는 여전히 https로의 접근이 되지 않는다는 것… 휴…

언제쯤 이 문제가 해결될라나 모르겠다.

 

TextField에서 htmlText 속성으로 쓸수 있는 html 태그들

일단 링크 주소. 찾느라 한참 고생했네 우씨. ㅡㅡ;;

http://help.adobe.com/ko_KR/AS3LCR/Flash_10.0/flash/text/TextField.html#htmlText

결론적으로는….

<a></a> :: 링크
<b></b> :: 볼드
<font></font> :: 폰트 설정
<u></u> :: 언더라인
<i></i> :: 이탤릭
<img> :: 이미지
<p></p> :: 문단
<span></span> :: CSS 스타일
<textformat></textformat> :: 텍스트포맷

다른건 그냥 뭐 무난무난. img 태그가 지원되는줄은 몰랐다. 신기하네. 그렇다면 혹시 텍스트박스 안에서 드래그&드랍도 되려나. ㅡㅡ;; 안될지도 머…

span이나 textformat을 쓰려면 좀 복잡한거 같은데… 잘만 쓰면 꽤 많은 기능을 구현 할 수 있을 것 같기도하다.

일단 이걸 가지고 웹에디터 모듈을 한번 작성해봐야할것 같다.