본문 바로가기

액션스크립트 3.0

메모리최적화 : 풀링기법 객체풀링 시간 경과에 따라 객체를 다시 사용하는 것과 관련된 객체 풀링 기술. - 객체풀링 베이스 클레스 package { import flash.display.Sprite; public final class SpritePool { private static var MAX_VALUE:uint; private static var GROWTH_VALUE:uint; private static var counter:uint; private static var pool:Vector.; private static var currentSprite:Sprite; public static function initialize( maxPoolSize:uint, growthValue:uint ):void { MAX_VALUE.. 더보기
인터페이스에 대한 이해 개요 이번 주제는 인터페이스에 대한 내용이다. 많은 책을 통해 인터페이스에 대해 공부를 했고, 개념을 명확이 잡으려고 노력했었다. 그리고 현재 프로젝트를 진행할 때 인터페이스 클래스를 도입해서 사용하고 있다. 그런데 막상 누군가가 인터페이스를 왜 사용해야 되는가? 목적인 뭔가? 라고 물어봤을 때 명쾌한 답을 할 수 없었다. 그래서 다시 한번 상기하는 의미에서 implements 라는 키워드와 함께 사용되는 인터페이스에 대해서 알아보도록 하겠다. 인터페이스를 사용하는 이유는 크게 두가지로 분류해본다. 이 내용은 내가 책을 통해 습득한 인터페이스 용도에 대한 지극히 개인적인 글이기 때문에 혹시 이 글을 읽다가 잘못된 내용이 있다면 바른 지적 부탁드립니다. ^^: 인터페이스의 핵심기능 하나 객체가 다양한 데이.. 더보기
문자열을 이용한 함수제어법 개요 여러개의 객체가 놓여져 있고, 그 객체를 클릭했을 때 하나의 리스너에 공통으로 이벤트를 각각 전달한다. 이런 상황에서 각각 객체들의 이벤트를 받아 실행될 함수들이 정의되어 있다고 생각하자. 이럴 때 보통 if 문이나 switch 문을 사용해서 실행될 함수들을 핸들링 하는데, 아래 기존 예제와 같다. 이때 도트연산자 접근법을 배열형태로 접근하게 되면 handler 함수 실행부를 좀 더 간결하게 처리할 수 있다. 사실 이방법은 동적레퍼런스를 접근할 때 주로 사용하는 방법이다. 보통 반복문을 이용해서 여러개의 변수에 접근하고 싶을 때 도트연산자를 배열형태로 접근해서 사용한다. 배열접근법은 변수를 문자열로 접근이 가능하게 해준다. 그럼 도트연산자를 어떠한 상황일 때 사용할 수 있을까? 만약 사용을 할 수 .. 더보기
디스플레이 엔진 : Vector기반 Blitting 구현하기 'Graphics로 Blitting을 구현하기'를 읽고... 트래픽 최적화를 위해 보통 BitmapData 클래스를 이용한 방법만 생각했었는데, 플래시가 벡터기반 프로그램이라는 관점에서 접근하면 너무나 당연하게 생각할 수 도 있지만, 전반적인 특성들을 고려해 봤을 땐, 상당히 흥미로운 접근법 입니다. 플래시10은 Graphics 객체의 모든 메서드들에 대해 대응하는 커맨드 객체를 지원합니다. 정말 멋지군요. 자료 Graphics로 Blitting을 구현하기 http://www.diebuster.com/?p=1276#viewSource 출처 : dieBuster 플리핑( flipping ) 이란? - 기본표면( primary surface )과 보조표면( back buffer ) 사이의 자료 이동을 말한다.. 더보기
디스플레이 엔진 : Bitmap기반 Blitting 구현하기 'BitmapData로 Blitting을 구현하기'를 읽고... AS3.0 의 핵심기능은 DisplayObject 모델객체로 구성되어있고, Event 모델을 사용하여 복잡한 이벤트를 전파하고 있습니다. 실행 속도를 중요시 하는 게임개발에 있어, 객체지향( OOP ) 프로그램 구조가 효율적이긴 하나, 전반적으로 무거운 구조를 가지고 있기 때문에, 어떠한 실행환경이냐에 따라 다른 방식으로 제작해야 할 필요성을 느낍니다. 이미 다른 언어에서 사용하고 있는 개념을 적용하여, 현명한 해결책까지 제시해주고 있습니다. 플래시 액션스크립트만 사용하고 있는 유저들에겐 생소하게 느껴질 수 있는 개념인듯 합니다. 플래시 게임에 관심 있는 분들은 꼭 한번 읽어 볼만한 포스트글인거 같습니다. 자료 Bitmapdata로 Blit.. 더보기
렌더링 최적화 : 성능에 따른 렌더링 주기 조정 '성능에 따른 렌더링 주기 조정'을 읽고 평소에 FPS 게임 제작에 관심이 많았는데, 트레픽 지연에 따른 렌더링 부화를 어떻게 해결해야하는지 좋은 글이 있어 소개합니다. 아래 포스팅 해놓은 글을 읽어 보면, 많은 도움이 되리라 생각되네요. 자료 성능에 따른 렌더링 주기조정 http://www.diebuster.com/?p=1785 출처 : dieBuster 더보기
AS3.0 핵심 개념 : Event Model 개요 액션스크립트 3.0 으로 넘어오면서 display object 구조 만큼 혁신적인 개선이라고 한다면, 단연 이벤트 모델이라고 할 수 있습니다. 기존 2.0 이하 버전에서는 단순한 callback 함수형태의 이벤트를 사용했습니다. 물론 사용하기엔 편했지만, 정밀한 제어를 할 수 없기 때문에 복잡한 인터랙셕을 구현하기 위해서는 반복적인 이벤트 코드를 사용할 수 밖에 없는 구조 였었습니다. callback 함수란 미리 이벤트 핸들러를 등록해놓고, 해당 이벤트가 호출됐을 때 리스너에게 이벤트를 전달해주는 개념을 강조하는 의미입니다. 3.0에서는 EventListener라는 조금 어려운 용어를 쓰고 있습니다. EventListener라는 개념에선 이벤트 우선 순위와 이벤트 흐름을 제어 할 수 있습니다. 3... 더보기
AS3.0 핵심 개념 : Display Object 개요 Display Object는 액션스크립트 3.0에서 지원하고 있는 시각화 객체들에 대한 관리시스템입니다. 우리가 알고 있는 OOP에 대한 개념을 실전에 적용한 대표적인 사례이기도 합니다. 기존 MoveiClip에 집중되어 있던 기능들을 Display Object 쪽으로 편입 시키거나 또는 저기반 언어로 재구성하였습니다. AS2.0 에서 객체( MovieClip)를 시각화 시킬 때 'attachMovie'라는 키워드를 사용했는데, AS3.0에서는 'addChild' 를 사용합니다. 언듯 보기에는 동일해 보입니다. 여기서 잠시 두 명령의 차이를 보도록 하겠습니다. - attachMovie : Display Object간 관계 구성과 동시에 객체의 인스턴스 생성. ( 의무적인 인스턴스명 부여 ) 사용예(.. 더보기
AS3.0 크로스스크립팅 : ApplicationDomain 클래스 문제 main.swf 에서 sub.swf 를 불러와서 어떻게 상호제어 할 수 있을까? AS2.0에서는 인스턴트네임을 이용해서 바로 접근이 가능했지만 3.0에 와서는 더 이상 그런 기능을 사용할 수 없습니다. 대신 인스턴스 네임이 아닌 getDefinition("클래스네임") 메서드를 이용해 해당 객체를 참조할 수 있습니다. 사용법 /****************************************** * Main.as : 이벤트리스너 클래스 * Sub.as : 이벤트를 발생하는 이벤트소스클래스 ******************************************/ //Sub.as 클래스 ------------------------------------------- package { impo.. 더보기
AS3.0 플래시 보안 : Security 클래스 플래시 보안의 기본개념 - 센드박스 보안 - 센드박스란 같은 상자안의 모래상자에는 보안이 필요없고, 다른 상자안에 있는 모래와는 보안을 해야하는 개념. - 샌드박스 보안이 플래시에 적합한 이유는 샌드박스 개념이 도메인 이름과 연관 관계를 가지고 있기 때문. - 다음과 같은 경우에 있어서 서로 다른 샌드 박스로 인식함. http://example.com http://www.example.com http://store.example.com https://www.example.com http://192.0.34.166 해당 주소 중 유념히 살펴봐야 할 부분이 http 와 https 프로토콜이다. 같은 서버있지만 서로 다른 샌드박스로 인식하고 있다는 것이다. 흔히 개발자들은 '사용하고자 하는 데이터가 다른 서버.. 더보기