본문 바로가기

flex

TextEvent를 사용해서 htmlText의 링크 클릭이벤트를 처리하기 데이터를 표시 하다보면 어쩔수 없이 버튼등으로 처리 하지 못하고 Text나 Label 등을 사용해서 보여줘야 하는 경우가 생긴다. Text 데이터를 보여 주면서 외부 링크의 경우 htmlText에 직접 링크를 걸어주면 되지만 플렉스 내부에서 처리 해야 하는 경우에는 좀 곤란해지기도 하는데 이럴때 TextEvent로 htmlText의 링크를 체크 할수 있다. TextEvent.LINK 와 TextEvent.TEXT_INPUT 두개밖에 없고 매우 간단하다 TextEvent () 생성자 public function TextEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, text:String = "") 언어 버전: ActionScr.. 더보기
데이터그리드 아이템랜더러 사용 및 CollectionEvent 오늘 좀 한가하다 -ㅅ-;;; 덕분에 하나 더 올리게 되었다. 이번 포스팅은 이전 포스팅의 계량형이라고 할까.. 업그레이드 버전 정도 된다. 2010/03/09 - [Flex/Event] - 데이터 그리드 ListEvent / DatagridEvent 특정 칼럼만 에디트 하기 목적 이전 포스팅에서 더블클릭으로 아이템 에디트 모드로 들어가고 클릭으로 선택 하는 형식으로 만들었는데 이번에는 itemRenderer를 이용해서 에디트 버튼을 가지고 있는 데이터 그리드를 만든다. 그리고 디비에 데이터를 업데이트 한다고 할때 어느 시점에서 업데이트를 해야 하는지 CollectionEvent를 이용해서 알아본다. rinn퍼플린Bmagis들캔디Azzatung짝퉁??.btnEditColumn{upSkin: Embed(s.. 더보기
데이터 그리드 ListEvent / DatagridEvent 특정 칼럼만 에디트 하기 데이터 그리드는 RIA 에서 빈번히 사용되는 컨트롤중 하나 이다. 관련된 이벤트도 많고 중요도도 높은 편이다. 데이터 그리드에서 editable = true 로 세팅 해주면 해당 칼럼을 그리드 내부에서 편집할 수 있다. 이것은 itemEditor를 통해서 가능해진다. 이 포스트에서는 특정 칼럼만 편집할 수 있도록 하고 몇가지를 더 추가 해서 완성하는 것을 해본다. 일단 mxml 부분 (태그 앞부분이 소문자로 나오는건 syntaxHighliter 때문이니 신경쓰지 않아도 된다) rinn 퍼플린 B magis 들캔디 A zzatung 짝퉁 ?? 아이디와 이름 혈액형을 model 로 데이터를 세팅하고 데이터 그리드에 바인딩 한다. 데이터 그리드에 연결되어있는 이벤트는 아래쪽에서 구현 예정이다. 아이디와 혈액형.. 더보기
SecurityError: Error #2070 - Stage/requireOwnerPermissions() 어플리케이션에서 SWFLoader 를 사용하여 다른 도메인의 SWF 파일을 불러올때 나는 에러이다. SecurityError: Error #2070: 보안 샌드박스 문제가 발생했습니다. 호출자 http://호출된domain/aaa.swf은(는) http://호출한domain/2008.swf이(가) 소유한 스테이지에 액세스할 수 없습니다. at flash.display::Stage/requireOwnerPermissions() at flash.display::Stage/addEventListener() at mx.flash::UIMovieClip/creationCompleteHandler()[E:\dev\flex\sdk\frameworks\projects\flash-integration\src\mx\fla.. 더보기
ViweStack Change Event - IndexChangeEvent TabBar / TabNavigator / ButtonBar 등.. ViewStack 과 관련된 컨테이너들을 사용하면서 가장 많이 나오는 질문은 "두번째 탭에 있는 오브젝트를 엑세스 하려고 하니 null 이라고 해요" 이다. 분명이 mxml 에서 다 만들어져 있는데.. 왜 안된다고 하는것인지 모르겠다고 질문이 올라오면. 가장 많이 달리는 답변이. "creationPolicy = "all" 로 해주세요" 이다. 과연 맞을까? 분명 저렇게 하면 에러가 나지 않고 전부 만들어진다. creationPolicy = "all" 은 생성 정책을 전부 만드는걸로 하겠다는 뜻이다. 탭이 세개가 있으면 탭 세개 안에 들어있는 컴포넌트 들을 처음 로딩시에 전부 만들겠다고 선언하는 것이다. 그럴리야 없겠지만 백개가 있으면 백.. 더보기
StringUtil.substitute 사용하기 mx.utils 에는 편하게 사용할 수 있는 api 가 담겨있다. ObjectUtil.toString 같은 것은 많이 사용하고 꽤나 유용하게 쓰인다. 이 포스트에서 이야기 할 substitute 는 간단하게 이야기 하면 문자열을 치환 해주는 메서드이다. 간단히 코드를 보면 이해가 될것이다. private var str:String = "select * from TABLE_NAME where userid='{0}' and menuid='{1}'"; private function build():void { var query:String = StringUtil.substitute(str,"rinn","n002"); trace(query); //select * from TABLE_NAME where userid.. 더보기
커스텀이벤트 (Custom Event) 만들기 / 사용하기 Flash / Flex 에서 사용되는 이벤트는 종류도 많고 거의 필요한 모든 이벤트가 있다고 해도 과언이 아니다. 그런데 왜 커스텀 이벤트가 필요할까. 기본이벤트에서 제공하는 target 속성으로 이벤트를 발생시킨 객체의 정보를 가져올 수 있다고 하지만.. 그 객체의 속성이 아니라 다른 변수를 넘겨야 할 필요가 있다거나 하는 경우.. 기본 이벤트가 발생했을때 그 이벤트를 멈추고 새로운 이벤트로 발생시켜서 상위의 객체로 통보하고 싶다거나 하는 경우등. 커스텀 이벤트를 사용하게 되면 이것 저것 편리한 작업들을 많이 할 수 있게 된다. 이번 포스트에서는 커스텀 이벤트를 만드는 방법에 대해서 살펴보자. 커스텀 이벤트는 Event 를 확장해서 만들어진다. package csEvent { import flash.e.. 더보기
이벤트의 흐름 (Event Flow) 제어하기 이벤트는 캡쳐-타겟-버블의 흐름을 탄다고 이전 포스트 (2010/02/10 - [Flex/Event] - Flex 이벤트의 전파단계와 버블링 ) 에서 이야기 했었다. 이번에는 이전 포스트의 마지막에 예를 들었던 특정 Event Phase 에서만 이벤트를 받는 것과 이벤트의 흐름을 끊는 것에 대해서 알아보자. 언제나 그렇듯이 백문이 불여일견 이라고 동작하는걸 보는쪽이 이해가 확실히 빠르다. 캔버스 세개에 MouseEvent.CLICK 을 받을 수 있는 리스너가 붙어있고 이벤트가 들어오면 오른쪽 텍스트에어리어에 뿌려주도록 되어있다. useCapture All 체크 박스는 이전 예제와 동일하다. useCapture가 true 일때 이벤트가 이벤트가 어떻게 들어오는지 확인 하는 용도로 사용 하면 된다. redC.. 더보기
Flex 이벤트의 전파단계와 버블링 모든 이벤트는 type 과 target 속성을 가지고 있다. 이것은 어떤 이벤트가 발생했는지 어떤 객체가 이벤트를 발생시켰는지에 대한 정보이기 때문에 꼭 필요하다. EventDispatcher 가 이벤트를 Broadcase(전파) 하게 되면 Listener가 발생한 이벤트를 받게 된다. 이벤트는 두가지 형식으로 나눠진다.스테이지에 보이는 객체가 발생시키는 이벤트와 보이지 않는 객체가 발생시키는 이벤트이다. 스테이지에 보이는 객체가 발생시키는 이벤트는 이벤트 흐름(event flow)에 따라서 이동하게 된다. 여기서 나오는게 버블링이다. 보이지 않는 객체가 발생시키는 이벤트는 이벤트 흐름을 타지 않고 해당 객체에 직접 등록된 listener 에서만 캐치 할수 있다. Loader 같은 것이 .. 더보기
Flex와 BlazeDS, iBatis를 사용하기 위한 환경 설정하기 - 다운로드 BlazeDS는 adobe 에서 상용어플리케이션인 LCDS(LiveCycle Data Service)의 몇몇 기능을 제외하고 오픈소스로 풀어놓은 놈이다. 자바와 Flex 간의 소켓통신을 AMF 프로토콜을 이용해서 하게 되고 데이터를 받을때 RemoteClass를 세팅해서 별다른 변환 없이 자바쪽의 Bean을 Flex의 VO로 매핑 해주는등 일단 한번 맛을 들이고 나면.. json과 httpService의 조합은 더이상 처다보기도 싫을 정도로 편리하다. BlazeDS 첫번째 포스팅이니 사용할 수 있도록 다운받아서 설치 해보자 일단 환경은 톰켓 5.5 / jdk 1.5 이상 / 이클립스 가니메데 / Flex sdk 3.4 이상 / 플레시 플레이어 10 을 기준으로 한다. jdk는 1.5 이상에서만 Blaze.. 더보기
Flex Context Menu 에 원하는 메뉴 추가하기 Flex 에서 마우스 오른쪽 버튼을 누르면 나오는 컨텍스트 메뉴이다. 이놈은 플레시 플레이어가 기본으로 탑재 하고 있고 메뉴 자체를 삭제 할수가 없다. 따라서 플랙스에서 마우스 오른쪽 버튼을 눌렀을때 뭔가 행동을 해주고 싶다면 기본 컨텍스트 메뉴에 새로운 메뉴를 추가 해서 작업을 할수밖에 없는데 요걸 만들어 보도록 하자. 간단하기 때문에 한방에 소스 코드 가고 결과 화면 보고 중요한거만 설명하도록 한다. new ContextMenu() 로 새로운 메뉴를 생성하고 new ContextMenuItem('text Alert') 으로 메뉴에 들어갈 아이템을 만든다. 이후에 customItems 라는 배열 property에 만든 menuItem을 push 해주면 보이게 된다. this.container.conte.. 더보기
Flex Event 기본 설명 나는 디자이너 출신이기 때문에 프로그래밍에 대한 심오한 지식이 없다. 대학에서 윈도우 프로그래밍이나 자바, C 관련 언어에 대한 강의를 들었지만 디자인에 더 관심이 많았기 때문에 별로 주의깊에 듣지 않았었고... 그걸 지금 와서 엄청 후회하는 중이다. Flash2 때 처음 Flash를 접하게 되었고 3 버전부터 사용을 하다가.. 4,5 를 넘어오면서 actionscript가 timeline 보다 점점 벽으로 다가왔지만.. 그때까지도 할만 했다. 하지만 2.0이 나오면서 부터 기존에 onClick 형식으로 타임라인에 스크립트를 입력하던 방식에 한계가 오고 내입장에서는 듣도보도 못한 addEventListener 라는놈이 나오기 시작하면서.. "아.. 개발자의 영역으로 가버리는구나" 생각하고 디자인에만 매진.. 더보기
윈도우 흔들기 Flex 버전 - ExternalInterFace 응용편 ExternalInterface가 뭐하는건지 잘 모르는 분은 2009/12/30 - [Flex/ExternalInterface] - ExternalInterface 기본기 이 글을 보고 오면 됩니다. ExternalInterface 가 자바스크립트의 함수를 실행시키기만 하는것이 아니고. 이전 글에 있듯이. Externalinterface.call("window.alert('아싸~')");처럼 자바스크립트 내장객체를 호출하거나 메서드를 실행하는것도 가능합니다. 이걸 이용해서 예전에 유행했던 윈도우 창 흔들기를 간단하게 구현해보도록 하겠습니다. 버튼을 클릭해보세요. 파일을 업로드 했습니다 ㅎㅎ 역시 아쉽게도 글쓰는 곳이 파일 업로드가 안되서 이 블로그를 흔드는것은 시범을 보여드릴수가 없고 어플리케이션 하나 .. 더보기
ExternalInterface 기본기 ExternalInterface는 swf 파일을 싸고 있는 컨테이너 html 의 자바스크립트와 통신하기 위한 인터페이스 입니다. ExternalInterface.call을 사용해서 html에 있는 자바스크립트 함수를 실행 시킬수 있고 ExternalInterface.callback을 사용해서 자바스크립트에서 SWF의 함수를 실행시킬수 있습니다. 이전 AS 2.0 에서는 fscommand()가 자바스크립트와의 통신에 사용되었는데 Player 9 버전 이후에는 Externalinterface를 사용하도록 권장하고 있습니다. html과 함께 사용되는 것이기 때문에 swf만 실행시키거나 stand alone player에서 실행시키면 디버그 창을 만날수있습니다. ExternalInterface가 중요한 이유가 .. 더보기
List 상하로 변경하기 2 - 스크롤포지션 세팅 Rinn`s Note - AS3 Dev : List 상하로 위치 변경하기 및 이벤트의 처리 by 퍼플린 | 2009/07/30 13:53 selectedIndex를 변경시켜주는 시점을 결정하기 위해서 list가 업데이트가 끝났다는 이벤트를 받아서 완료되면 인덱스를 수정해주는 것이다. 이처럼 Flex나 Flash는 몇몇 method를 제외하고는 비동기로 동작하기 때문에 데이터의 수정이나 삭제 입력시에 ... 위글에서 이어지는 포스트이니 이전글을 보고 오는것도 좋다. ------------------------------------------------------ 이전 글에서 리스트 내부의 아이템을 위로 옮기는 걸 했는데. 보면 알겠지만 뭔가 부족하다.. 리스트가 길어질경우 현제 옮기고 있는 아이템이 리스트.. 더보기
List 상하로 위치 변경하기 1 - 이벤트의 처리 리스트의 아이템을 선택해서 위치를 위로 올려주는 프로그램이다. private var arrData:Array; private var idx:int; private function init():void { arrData = []; arrData.push({label:"데이터1", data:"data1"}); arrData.push({label:"데이터2", data:"data2"}); arrData.push({label:"데이터3", data:"data3"}); list.dataProvider = arrData; } private function posUp():void { if(list.selectedItem && list.selectedIndex != 0) { idx= list.selectedIndex;.. 더보기
bitmapData getPixel 사용하기 package { import flash.display.Bitmap; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.net.URLRequest; [SWF(width="1000", height="1000", frameRate="24", backgroundColor="#FFFFFF")] public class bitmapDataHandle extends Sprite { private var container:Sprite; private var bitmap:Bitmap; private var loader:Loader; publ.. 더보기
플레시에서 개행문자의 처리 웹이나 디비에서 데이터를 가져온 텍스트의 경우 저장하는 방법에 따라서 개행이 /r/n 으로 넘어오는 경우가 있다. 이 경우 플레시는 한줄 개행이 아니고 두줄로 처리 해서 텍스트 필드의 라인간격이 두배로 나오는 경우가 생기게 되는데 이때는 넘어오는 텍스트에서 /r을 검색해서 삭제 해버리면 된다. 이럴때 사용하는 함수.. private function removeCarriageReturn(str:String):String { var myPattern:RegExp = /r/g; str = str.replace(myPattern,""); return str; } 함수이름이 내용보다 긴것 같지만 무슨 상관이랴~ /r 은 캐리지리턴이라부르고 입력커서를 라인의 맨 앞으로 보낸다 /n은 라인피드라고 해서 커서를 다음줄.. 더보기
MovieClip을 Bitmap 데이터로 저장하기 private function mcToBitmap(mc:MovieClip):Array { var bitmapData:BitmapData = new BitmapData(mc.width, mc.height,true); var bitmapArray:Array = []; var totalFrame:int = mc.scenes[0].numFrames; trace(totalFrame); for(var i:int=0; i 더보기
폰트 임베드시에 Unicode Range 설정하기 AS3 에서 폰트를 동적으로 embed 하기 위해서 폰트 SWF파일을 만들게 되는데 용량을 줄이기 위해서 필요한 설정이 unicodeRange이다. 숫자나 영문 한글 라틴 지원한다면 중국어 일어등 필요한 범위만을 embed하게 되므로 용량이 줄어들지만 범위 이외의 문자는 표시 되지 않기 때문에 그 범위를 벗어나는 텍스트는 절대 나오지 않는다 라는 확신이 있을때 지정해서 사용하는편이 좋다. 괜히 개발 해놨다가 글이 안올라가는거 같아요 이런 소리 듣고 나면 버그가 있는줄 알고 검내 찾다가.. 범위 이외라서 올라간 글이 단지 안보이는 것뿐이라는 것을 알고나면 허탈해질수도 있다. package { import flash.display.Sprite; public class Default extends Sprite.. 더보기
폰트 동적 추가 하기. 폰트 동적 추가하기 fontKR.swf 에 font Class가 들어있고 linkage 네임은 font_kr로 되어있다. package { import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.net.URLRequest; import flash.text.AntiAliasType; import flash.text.Font; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; public class FontLoadTest extends Sprite { private va.. 더보기