본문 바로가기

Actionscript3.0

Flash Platform에서 OAuth 사용하여 인증 요즘 OAuth 인증 때문에 고생좀 했습니다. 머리속에 있는 개념을 정리도 할겸 제가 사용해본 OAuth 라이브러리에 대해 소개 합니다. OAuth 란? OAuth가 사용되기 전에는 인증방식의 표준이 없었기 때문에 기존의 기본인증인 아이디과 비밀번호를 사용하였는데, 이는 보안상 취약한 구조이다. 기본인증이 아닐 경우는 각 애플리케이션들이 각자의 개발한 회사의 방법대로 사용자를 확인하였다. 예를 들면 구글의 AuthSub, AOL의 OpenAuth, 야후의 BBAuth, 아마존의 웹서비스 API 등이 있다. OAuth는 이렇게 제각각인 인증방식을 표준화한 인증방식이다. OAuth를 이용하면 이 인증을 공유하는 애플리케이션끼리는 별도의 인증이 필요없다. 따라서 여러 애플리케이션을 통합하여 사용하는 것이 가능.. 더보기
[AS3] 외부에서 로드된 객체 복제(재사용) ApplicationDomain 에 대한 개념만 잘 이해 하고 있다면, 이 포스팅은 보지 않으셔도 됩니다. 최근까지 ApplicationDomain 에 대한 개념 자체를 다르게 이해 하고 있어서 어렵다고 생각했던 부분들은 정리 합니다. Flash/Flex 를 사용하면서 가장 많이 사용하는 클래스중 하나는 Loader 일 것 입니다. Loader 클래스는 SWF 나, 이미지 (JPG, PNG 등등) 을 로드 하는데 사용 합니다. 많은 분들이 이미지를 로드 하는데 자주 사용하고 있을거라 생각 합니다. 외부에서 이미지를 로드 하면 로드된 리소스는 Bitmap 으로 처리가 되어 BitmapData 의 clone 메소드를 통해서 해당 이미지를 재사용 할 수 있습니다. 코드는 아래와 같습니다. // 이미지 로드 p.. 더보기
[AS3] Flash 로 오디오 플레이어 만들기 Flash Player 는 다양한 멀티미디어를 불러오고 재생 할 수 있다. 그 중에서 오디오 관련 파일은 기본적으로 MP3 파일을 재생 할 수 있으며, popforge (http://code.google.com/p/popforge/) 와 같은 라이브러리를 사용하면 WAVE 파일도 재생 가능 하다. 하지만 이 문서에서는 Actionscript3 에서 제공하고 있는 기본 API 를 가지고 파일을 불러오고 재생 하기 위한 기본적인 이론에 대해 다룬다. Flash 에서 오디오 파일을 재생 하기 위해서는 Sound, SoundChannel 를 사용한다. 디테일한 플레이어를 구현하기 위해서는 다른 클래스도 알아야 하지만 기본 기능만 만든다면 위 두가지 클래스의 레퍼런스만 봐도 충분히 구현 할 수 있다. Sound .. 더보기
[AS3] TLF( Text Layout Framework ) 사용시 FlashVars 접근 문제 Adobe 에서는 Flash Player 10 부터 TLF( Text Layout Framework ) 를 제공하고 있다. 기존 TextField 를 사용하는 방식은 사용 방법이 편하긴했지만, 텍스트를 다루는데 기능적으로나 퍼포먼스 측면에서 부족한게 많았다. TLF 에서는 이러한 단점들을 Text 를 다루는 Flash Player 의 low level 에 접근하는 프레임워크를 제공하므로 부분적으로 해결되고 있는 움직 임이다. 더 자세한 내용은 Adobe Labs - TLF 에서 확인 가능 하다. 사용 방법은 Adobe Labs 에 자세히 나와 있고, 한가지 주의할 점은 Flash CS5 에서 작업할때 Actionscript 3.0 Settings 패널에서 Runtime Shared Library Sett.. 더보기
[AS3] callback 과 dispatchEvent Actionscript 3.0 의 Event Model 은 이벤트를 dispatch 하는 방식으로 이루어져 있습니다. 많은 클래스들이 클래스 내부적으로 "어떠한 행동"에 대해 이벤트를 외부로 알려주는 방식을 사용하고 있습니다. 예를 들어 Loader 클래스를 사용할때, 이미지나 파일들을 로드한 후에 Loader 클래스 내부적으로 이벤트 dispatch 가 일어나서 사용자나 개발자는 그 상황에 따른 후 처리를 할 수 있습니다. import flash.display.Loader; import flash.events.Event; import flash.events.EventDispatcher; var ld:Loader = new Loader(); ld.addEventListener(Event.COMPLETE,.. 더보기
[AS3] Internet Explorer(IE) 에서 #2032 스트림 오류입니다. URLLoader를 사용하여 데이터를 로드 할때 서버에서 데이터가 안내려 오면 2032 스트림 오류가 발생 한다. 하지만 서버도 정상적으로 동작하고 데이터도 정상적으로 내려오고 있을때(해당 파일이 존재 할 때), IE 에서만 2032 오류가 발생할 경우가 있다. var infoLd:URLLoader = new URLLoader(); var queryUrl:String = ""; infoLd.addEventListener(Event.COMPLETE,hnInfoLoaded); infoLd.addEventListener(IOErrorEvent.IO_ERROR,hnLoadError); infoLd.load(new URLRequest(queryUrl)); function hnInfoLoaded( e:Event ).. 더보기
AS3 vs Javascript Performance Test 작년에 썼던 Javascript vs Actionscript 라는 글에서는 비교 관련 자료가 06년도의 Flash player 9 와 그때 당시의 브라우져를 대상으로 테스트한 것인데요. jacksondunstan.com 블로그에서 최근에 AS3 기반의 Flash player 10과 최근 브라우져의 Javascript 와 Performance 테스트를 한 포스팅이 있었네요. 아래는 테스트 한 결과 입니다. 참고 자료 : AS3 vs Javascript Performance Test AS3 vs Javascript Performance Test Followup 더보기
[AS3] TextField 에 한정된 라인에만 글짜 넣기 외부 데이터를 불러 와서 TextField 에 넣어 줄때, 외부 데이터 문자 길이를 UI 에 맞게 잘러서 나타내는 경우가 있습니다. 기본적으로 String 클래스에서 제공하는 substr 등을 이용하여 문자열을 보기 좋게 자르는데요. 여기서 소개 하는 방법은 substr 과 TextField 의 getLineOffset를 이용하여 한정된 라인에만 글짜를 출력 하는 방법 입니다. var field:TextField = new TextField(); field.width = 250; field.wordWrap = true; field.text = "안녕하세요.이것은 테스트 입니다.안녕하세요.이것은 테스트 입니다.안녕하세요.이것은 테스트 입니다."; addChild(field); 위의 코드를 출력하면 아래와 .. 더보기
Avoid ints in Actionscript 오랜만에 블로그를 둘러 보다 흥미로운 포스팅을 보았는데요. Actionscript 로 작업할시 숫자 타입의 int 를 사용을 자제 하라는 내용 입니다. 일반적으로 생각하면 int 가 Number 보다 크기가 작으니 int 로 처리 하면 더 빠르다고 생각하는 분들이 많으실텐데요. 이 포스팅에서는 여러 이유를 통해 부정 하고 있습니다. 이유 1. Number 를 사용하는게 int를 사용하는 것 보다 빠르다. 아래 코드를 실행 시키면 어떤 결과가 나올까요? public function timingTest() : void { var intTime : Number; var numberTime : Number; var i : int; var j : int = 0; intTime = (new Date()).time.. 더보기
Factory Pattern (AS3) 목적 : 애플리케이션을 특정 구현으로 부터 분리시킨다. 객체를 만드는 일을 한다. (크리에이셔널 패턴 : 생성과정과 관련된 패턴) 팩토리 메소드 패턴 - 팩토리 메소드 패턴에서는 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하게 만듭니다. 팩토리 메소드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브클래스에게 맡긴다. 목적 : 두개나 그 이상으로 분리 됐지만 서로 관련이 있는 클래스들의 계층 구조를 엮어주기 위한 것이다. - 상속을 통해서 객체를 만든다. - 객체를 생성할 때는 클래스를 확장 하고 팩토리 메소드를 오버라이드 해야 한다. Factory Pattern에서 중요시 하는 디자인 원칙 추상화된 것에 의존하도록 만들어라. 구상 클래스에 의존.. 더보기
Actionscript3.0의 DisplayList 목차 DiplayList 란? - DisplayList의 3가지 요소 - DisplayList의 구조 - DisplayList 구조의 장점 - Index 개념 - Shape, Sprite, MovieClip - DisplayList의 부모 자식 노드 관계 탐색이 간편해짐 DisplayObject 클래스 - DisplayObject를 상속받는 클래스 - 속성 메소드 및 이벤트 - root , parent, stage 에 접근하기 - Loader 를 사용해 불러온 외부 swf 의 root 와 stage DisplayObjectContainer 클래스 - DisplayObjectContainer 의 상속 - 속성 및 메소드 DisplayList 란? DisplayList 란 SWF안에 존재 하는 객체들 중에 .. 더보기
What is "Flashplatform" ? 목차 Flash platform 에 대해서 Flash 와 Flex 그리고 AIR Actionscript 버젼벌 정보 Flash player 버젼별 정보 Welcome to "Flash platform" Flash platform 이란? Flash 컨텐츠를 개발 하기 위한 방법은 여러 가지가 있다. Flash IDE (CS3, CS4) 를 이용하는 방법이나, Flex Builder 나 Flash Builder 를 이용하여 MXML 이나 Actionscript Project 를 컴파일 하는 방법, 또는 FDT 를 이용하여 컴파일 하여 SWF 를 생성하는 방법이 있다. 이 모든 Flash 컨텐츠의 결과는 SWF 형식으로 되어 있고 이러한 작업들은 Flash 컨텐츠 개발이라 한다. (곧 Flash Catalys.. 더보기
OpenCV in Flash OpenCV란 무엇인가? OpenCV OpenCV(영어: Open Computer Vision)은 오픈소스 컴퓨터 비전 C 라이브러리이다. 원래 인텔에서 개발되었다. 현재 버전 1.0이 나와있으며 윈도, 리눅스 플랫폼에서 사용할 수 있다. 실시간 이미지 프로세싱에 중점을 둔 라이브러리이다. 인텔 CPU에서 사용되는 경우 속도의 향상을 볼 수 있는 Intel Performance Primitives (IPP)를 지원한다. 출처 : Daum 백과 사전 OpenCV 라이브러리를 이용하여 할 수 있는것? OpenCV를 이용하면 영상처리 기술을 비교적 손쉽게 구현 할 수 있다. 입력과 출력 그리고 영상 처리에 대한 기본적인 기능들이 대부분 구현 되어 있다. 예를 들어 다음과 같은 작업 들을 할 수 있다. - 얼굴.. 더보기
Flash player 의 보안 Front - End 개발을 하다 보면 Flash player의 보안 범위를 판단하지 못해 곤란한 일을 겪은 일이 있을것이다. Flash 개발자의 경우에는 미쳐 알지 못한 내부 보안 설정을 하지 않아서 데이터를 못불러 온다거나, 바뀐 Flash player 보안 정책 때문에 고생을 했을 수도 있고, UI개발자의 경우에는 Flash 개발자가 없는 상태에서 여러 상황을 판단을 해야 하지만 Flash player의 보안 규칙에 대해 알지 못해서 혼란 스러운 경우가 있을 것이다. 이 문서는 모든 Flash 개발자와 UI개발자가 알아야 할 Flash player의 보안에 대해 기초적인 내용을 다룰 것이다. Flash player 보안 개요 Flash player의 보안은 Flash, Flex 로 만들어진 SWF .. 더보기
AS3.0의 통신 - 브라우저와의 통신 (Javascript) Flash의 컴파일 결과물인 SWF는 그 자체로 UI 나 GAME 그리고 어플리케이션(AIR)이 될 수 있지만, 대부분은 브라우저에 Embeded 되어 사용됩니다. 배너와 같이 단순하게, 보여 주기 위해서 브라우저에 Embeded하는 경우도 있겠지만, UI 나 웹 어플리케이션을 구현할 때는 브라우져나, 서버사이드 언어와의 통신이 필요 하게 됩니다. AS3.0으로 거의 대부분의 Front-End 단의 개발작업을 모두 할 수 있긴 하지만, 퍼포먼스나 구현의 편의성을 위해 Javascript를 사용해야 하는 경우가 많습니다. 이 문서는 앞으로 몇개의 포스팅을 통해 다루게 될 AS3.0의 통신 방법에 대한 첫 문서로서 AS통신의 가장 기본이라 할 수 있는 브라우저와의 통신에 대해 다루고 있습니다. SWF와 브라.. 더보기
AS2.0에서 AS3.0으로의 달라진 점은 무엇인가? 문서 원본 : Adobe 기술문서 작성된 날짜 : 2009-05 저자 : 강동혁(동강) 저자 소개 : Daum communications 에서 UI 개발 업무를 하고 있으며, Flash 커뮤니티에서 ‘동강’ 이라는 닉네임으로 활동하고 있다. 뭐든지 사용하기 편해야 한다는 생각을 가지고 개발을 하고 있으며, 최근엔 새로산 자전거를 자주 못타고 다녀 아쉬워 하고 있다. -Display 객체들의 다양화 -Display List구조의 변화 -객체의 심도 관리 향상(Depth에서 index로) -Depth방식에 비해 Index방식이 효율적인 점 -이벤트 모델의 변화 Flash를 하던 많은 사람들이 AS3.0이 나오고 나서 혼란스러웠던 이유는 두 가지이다. 첫 번째로 Flash에서 핵심이라고 할 수 있는 Displ.. 더보기
AS3.0 에서의 메모리 관리 package{ import flash.display.MovieClip; import flash.display.Sprite; /** * @author kang */ public class ResourceTest extends Sprite { public function ResourceTest() { var mc : MovieClip = new MovieClip(); addChild(mc); mc.addEventListener(Event.ENTER_FRAME, onEnterframeHandler); } private function onEnterframeHandler(event : Event) : void { trace("execute event"); } } } 위와 같은 코드가 있다고 하자. mc는 Ev.. 더보기
타임라인에서 일어 나는 동작을 알려주는, TimelineWatcher Flash에서 MovieClip을 이용한 작업을 하다 보면 MovieClip에서 일어나는 동작을 코드상에서 알아 내서 이벤트를 발생 시켜야 하는 경우가 있다. 예를 들어 다음과 같은 Timeline이 있을때 재생헤드가 30 frame에 도달 할때 이 동작을 알아 내어 코드를 실행 시켜야 하는 경우가 있다. 이럴 경우 30 frame에 dispatchEvent를 사용하여 MovieClip을 가지고 있는 객체에 이벤트를 전달해 주는 방법을 사용할 수 있다. dispatchEvent(new Event("playheadreached"); MovieClip에서 전달한 이벤트는 this.addEventListener("playheadreached",headreachedHandler); private function.. 더보기
긴 길이의 String을 TextField에 나타내기 위한 메소드 Javascript나 Actionscript에서 긴 길이의 문자열을 고정된 너비의 TextField에 집어 넣으려면 substr(startIndex,length) 이나 substring(startIndex,endIndex)을 사용합니다. 원하는 문자의 길이 만큼 파라 미터를 넘겨서 처리 하면 손 쉽게 해결 됩니다. var field:TextField = new TextField(); addChild(field); var str:String = "Flash Actionscript3.0 플레시 액션스크립트"; field.text = str.substring(0,20); 하지만, 위와 같은 방법에는 치명적인 단점이 있습니다. 영어와 한글의 너비값이 차이가 있기 때문에, 영문의 10글짜와 한글의 10글짜의 너비.. 더보기
숫자에 1000단위 콤파(,)를 넣어주는 방법 -AS3.0 var money:Number = 100000000; trace(numberToDot(money)); function numberToDot(num:Number):String { var str:String= String(num);// 숫자값을 받아서 String유형으로 변경한다. var str_arr:Array = new Array(); for (var i:int = 0; i < str.length; i++) { // str에 있는 문자값을 charAt을 이용하여 하나씩 불러온 뒤, 배열에 넣는다. // i%3 이 0일때 마다 쉼표를 삽입하여 문자들을 3개씩 나눈다. if ( i % 3 == 0 && i != 0) { str_arr[i]=str.charAt(str.length-1-i)+","; } else.. 더보기