Adobe AIR2011.09.12 23:23

  Flash Builder 에서 Flash Project, Flex Project 그리고, Actionscript Project 를 생성하여 Adobe AIR 어플리케이션을 개발 할 수 있습니다. 결과물은 .air 확장자 또는 윈도우에서는 .exe, 맥OSX 에서는 .dmg 로 설치 파일을 만들수 있습니다. 


 Adobe AIR 의 단점중 하나가 AIR Runtime 이 설치 되어 있어야 동작 한다는 점 입니다. 하지만 .exe 나 .dmg 로 설치 파일을 패키징 하게 되면 설치 파일에 AIR Runtime 을 포함 시킬수 있기 때문에 사용자가 따로 AIR Runtime 을 찾아서 설치 안해도 된다는 장점이 있습니다. 얼마 전까지만 해도 Android OS에서 동작 하는 Adobe AIR 어플리케이션을 패키징 하는 옵션에 AIR Runtime 을 포함시키는 옵션이 없었는데 AIR 3.0 에서 추가 되었다고 하니, 이제 Android 에서도 AIR Runtime 을 따로 설치 하는 수고를 하지 않아도 될것 같습니다. 



 웹을 기반으로 하는 서비스들은 개발사 측에서 새로운 버전을 웹에 배포 하면 새로운 버전을 바로 사용할 수 있습니다. 하지만 Adobe AIR 기반의 데스크톱 또는 모바일 설치 서비스들은 개발사가 따로 업데이트를 구현해 줘야 합니다. 친절하게도 Adobe 는 업데이트를 아주 쉽게 구현할 수 있는 클래스를 제공해 주고 있습니다. 


import flash.fileSystem.File;

import flash.desktop.Updater; 
var updater:Updater = new Updater();// applicationStorageDirectory에 설치파일이 저장되어있다고 가정

var airFile:File = File.applicationStorageDirectory.resolvePath("새로운설치파일이름");

var version:String = "새로설치될버전";

updater.update(airFile, version);

 

 새로운 설치 파일을 다운로드 받은 후에 위와 같이 Updater 클래스를 이용하면 알아서 새로운 버전으로 업데이트를 하게 됩니다. 하지만 Updater 클래스는 .air 로 패키징 되어 설치된 어플리케이션만 사용할 수 있습니다. Native Installer (.exe 또는 .dmg)로 패키징 된 어플리케이션은 사용할 수 없습니다.



(Export 옵션에 AIR package, native installer 등을 제공 하고 있다)


Updater 를 이용한 업데이트 코드를 Native Installer 로 패키징되어 설치된 어플리케이션에서 실행 시키면 에러를 발생 시킵니다. 



0 : This method is not supported in this profile 



Updater 클래스의 isSupported 역시 false 로 나오게 됩니다. Reference 를 보면 다음과 같이 기술되어 있습니다.



 Updater 클래스는 데스크톱 프로파일에서만 지원되며, 확장 데스크톱 응용 프로그램(기본 설치 프로그램을 사용하여 설치한 응용 프로그램)과 AIR 모바일 프로파일 또는 AIR for TV 프로파일에서는 지원되지 않습니다. Updater.isSupported 속성을 확인하십시오.



 Reference 에 떡하니 안된다고 기술되어 있습니다. Updater 클래스라고 해서 당연히 Native Installer 에서도 될거라 생각했던 제가 순진했던 거였습니다. 그리고 친절하게 다음줄에 Native Installer 에 대한 내용이 기술 되어 있습니다.



확장 데스크톱 응용 프로그램(기본 설치 프로그램으로 설치한 응용 프로그램)에서는 새로운 버전의 기본 설치 프로그램을 다운로드하여 File.openWithDefaultApplication() 메서드를 통해 실행할 수 있습니다. 


힌트만 알려줄 뿐 업데이트 방법에 대해서는 나와 있지 않습니다. (레퍼런스 어딘가에는 존재 하더군요) 

 Native Installer 로 패키징된 어플리케이션을 업데이트 시키는건 의외로 간단 합니다. 하지만 왠지 찝찝하게 느껴지는 업데이트 입니다. 일단 업데이트 시킬 파일을 다운로드 받습니다. 그리고 실행 시킵니다. 구체적인 코드를 다음과 같습니다. (파일을 다운로드 받는 과정은 생략합니다.)



if(NativeProcess.isSupported) {                        

var nativeProcessInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();

// file 은 설치파일을 나타내는 FIle 객체

nativeProcessInfo.executable = file;

nativeProcessInfo.arguments = new Vector.<String>();

nativeProcessInfo.workingDirectory = file.parent;

// NativeProcessStartupInfo 를 통해 실행

var process:NativeProcess = new NativeProcess();

process.start(nativeProcessInfo);

NativeApplication.nativeApplication.exit(0);  

}  


 

 위의 코드를 실행 시키면 실행 되고 있는 어플리케이션은 종료 되고 새로 다운 받은 어플리케이션 파일을 실행 합니다. 해당 파일이 실행 되면 다음과 같은 설치 화면이 나타나고 바꾸기를 클릭하면 새로운 버전으로 설치 됩니다.





 업데이트라고 하기에는 좀 빈약해 보이는 방법 입니다. 좀 더 깔끔하게 설치 및 업데이트를 하고 싶다고 하면 설치 및 제거 업데이트를 구현한 인스톨러를 만들고 그 안에서 Native Installer 로 패키징된 파일을 설치 하는 방법을 사용해야 합니다. AIR 자체적으로는 위의 화면을 바꾸는 방법이 아직까지는 제공되지 않고 있습니다. Daum 마이피플이 인스톨러를 이용하여 설치/제거/업데이트를 하는 경우에 속 합니다.





 Adobe AIR 가 원소스 멀티플랫폼이라는 장점을 내세우면서 홍보를 하고 있는데요. 아직 까지는 설치 호환성에서 다소 문제가 보입니다. 물론 사용자 컴퓨터 환경이 너무 다양해서 테스트 못하는 점도 이해 하지만 모바일에 신경 쓰기 이전에 데스크탑용 AIR Runtime 의 설치 호환성을 좀 더 보완해 줬으면 하는 바램 입니다.



 




Posted by Flash 동강
Adobe AIR2011.04.24 19:34

 얼마 전에 Adobe AIR 기반으로 다음 뮤직의 음원을 다운받는 어플리케이션을 개발했습니다. AIR 기반으로 어플리케이션을 개발한다는것 이 많은 사례를 가지고 있지 않았고 국내에는 2권 정도의 AIR 개발 서적밖에 존재 하지 않아 구글링에만 의존해서 여러가지로 고생을 했습니다. 


  지금부터 작성할 포스팅은 제목 그대로 AIR 개발을 하기 전에 알아 두면 좋은 것들입니다. 제가 몰라서 실수 했던 것들은 정리 한다는 의미가 더 크니 읽기 전에 참고 하세요.


 AIR 기반으로 개발한다는것은 사용자 컴퓨터에 설치 후에 실행되는 어플리케이션을 만드는 것 입니다. Flash Player 기반은 주로 웹에 올려져서 사용되고 브라우저 라는 종속된 공간 안에서 실행 되는 것이기 때문에 사용자에게 영향을 미치는 범위가 AIR 에 비해 작습니다. 그래서 AIR 개발시에는 Flash Player 기반으로 개발 할 때는 하지 않았던 Applications & Installer Setting 작업을 하게 됩니다. 이번 포스팅에는 Application Setting 에 대해 다루겠습니다. 


 Flash IDE 나 Flex/Flash Builder 를 보면 어플리케이션과 설치할때 사용되는 인스톨러를 셋팅하는 패널이 있습니다. 이 패널 셋팅을 통해 기본적인 내용과 세부적인 내용을 셋팅 합니다. Flash IDE 에서는 위의 패널을 통해 셋팅을 하고 어플리케이션이 컴파일 될때 -app.xml 파일에 해당 내용이 포함되어 컴파일 됩니다. Flash Builder 에서는 -app.xml 파일을 직접 셋팅해서 어플리케이션과 인스톨러를 셋팅합니다. 셋팅된 내용들은 결과 적으로 -app.xml 파일로 작성 되는데 기본적인 내용들은 다음과 같습니다.




	AirTest
	AirTest
	AirTest
	v1
	
	


-app.xml 이 많은 설정 값을 가지고 있기 때문에 모든 노드에 대해 설명하는건 의미 없을것 같고, 주의 해서 봐야할 부분은 다음과 같습니다.


1. <id></id>

어플리케이션의 고유 이름이다. 다른 어플리케이션과 겹치게 하면 절대로 안되며, 고유성을 유지 해야 한다. 배포시 변경했을 경우 새로운 어플리케이션으로 인식 되므로 업데이트가 안된다. 브라우저에서 어플리케이션을 실행 시킬때도 이 id 값을 이용한다.


trace(NativeApplication.nativeApplication.applicationID);


2. <version></version>

어플리케이션의 버전이다. 어플리케이션을 업데이트 할때 사용되며, 설치 파일을 생성할 당시 설정한 Version 과 Updater 클래스를 이용하여 업데이트 할때 전달하는 버전 정보가 다를때 업데이트를 실패 한다.


var descriptor:XML = NativeApplication.nativeApplication.applicationDescriptor;
var air:Namespace = descriptor.namespaceDeclarations()[0];
var currentVersion:String = descriptor.air::version;


3. <programMenuFolder></programMenuFolder>

프로그램 메뉴 설정 옵션이고 아래는 Daum 뮤직 다운로드 매니저를 <programMenuFolder>Daum</programMenuFolder> 에 설정한 화면이다.



4. <installFolder></installFolder>

기본 설치 폴더를 설정하는 옵션이다. 아래는 Daum 뮤직 다운로드 매니저를 <installFolder>Daum</installFolder> 에 설정한 화면이다.



 다음으로 다룰 내용은 어플리케이션 인증에 관한 부분입니다. AIR 기반의 어플리케이션은 사용자 컴퓨터에 설치 되고 악의적으로 사용자의 컴퓨터를 조작할 수 있는 기능들을 가질수 있기 때문에 사용자로 하여금 설치 전에 해당 어플리케이션이 안전한가를 인증서를 통해 입증 하는 것 입니다. 아래는 인증서 설정 탭 입니다.



 인증서는 어플리케이션 설치 파일을 만들때만 사용됩니다. 이 인증서는 설치 파일이 배포된 후에 어플리케이션을 배포한 사람 외의 개발자가 어플리케이션을 임의로 수정하여 배포 하는 것도 방지해 줍니다. 실제로 AIR 개발 결과물인 .air 파일은 .zip 파일로 확장자만 바꾼다면 그 안에 포함되어 있는 .swf 파일 등을 볼수 있기 때문에 이 설치 파일을 임의로 변경 한다면 파일이 손상되어 어플리케이션이 설치 될 수 없다는 에러 메시지가 나타나게 됩니다.




인증서 발급 기관

VeriSign ( http://www.versign.com )

thawte ( http://www.thawte.com ) 


인증서가 없어도 개발자가 본인의 인증서를 만들어 사용할 수 있습니다. 하지만 공인 인증 기관에서 발급하지 않은 인증서는 위의 이미지와 같이 제작자 ID 가 알수 없다고 나오게 됩니다. 또한 어플리케이션을 출시한 뒤에 정상적으로 서비스를 하는 도중 인증서를 바꾸게 되면 기존에 서비스 하고 있는 어플리케이션이 새로운 버전의 어플리케이션으로 업데이트 할 수 없습니다.


오랜만에 쓰는 글이라 역시 힘드네요. 다음 포스팅에서는 업데이트에 대해 다룰 예정 입니다. 잘못된 내용이나 AIR 개발 중 고민하고 있는 부분들은 댓글을 통해 공유 주세요~ 

Posted by Flash 동강
Adobe AIR2011.02.18 14:22

 최근들어 Adobe AIR 기반으로 되어 있는 데스크톱 어플들이 하나 둘씩 나오고 있는데요. FlashPlayer 기반의 개발보다 자료가 없어서 개발하면서 검색하는 시간이 점점 늘어만 가네요. 그중 하나 BrowserInvokeEvent 사용시 arguments 값에 대한 이야기를 해 보려고 합니다.


AIR 기반 어플리케이션은 일반적으로 아이콘 클릭으로 실행 시키는 방법과 함께 브라우져에서 사용자 이벤트 (마우스 또는 키보드)가 발생 했을때 실행 시킬수 있는 기능이 있습니다. 자세한 내용은 아래 링크에 있는 설명서를 참고하세요.


웹 페이지에서 AIR 응용 프로그램 설치 및 실행


이때 어플리케이션이 실행 되었을때 아이콘을 클릭해서 실행이 되면 InvokeEvent, 브라우저에 의해서 실행이 되면 BrowserInvoke 이벤트가 발생하게 됩니다. 

브라우저에서의 실행은  air.swf 파일 로드를 통해 그안에 정의 되어 있는 메소드의 installApplication 과 launchApplication을 이용합니다. 이 두 메소드의 쓰임은 위의 링크에서 브라우저에서의 AIR 응용프로그램 설치, 브라우저에서 설치된 AIR 응용 프로그램 시작 에서 확인할 수 있습니다. 

이 두 메소드는 설치후에 어플리케이션이 실행되었을때 파라미터를 전달해 주는 arguments 값을 설정해 줄수 있는데요. 이 arguments 값이 Array 형으로 전달 되는데 Array 안에 들어 갈수 있는 데이터형이 문자형(String) 으로 제한 됩니다. 보안상에 이유로 인해서 제한을 두고 있는것 같지만, 문제는 문자형도 제대로 넘어가지 않습니다. 예를 들어 URL 은 배열안에 넣고 전달 하려고 해도 아에 launchApplication 이나 installApplication 이 호출된 후에 AIR 어플리케이션이 실행 되지 않습니다. 그 이유는 문자안에 영문 문자열이 아닌 다른 문자가 포함되어 있을때 이러한 문제가 발생 합니다.

해결 방법은 전달해야 하는 문자들은 Base64로 인코딩 한 후에 전달하고 어플리케이션에서 디코딩해서 사용하면 됩니다.
Flex SDK 를 사용한다면 기본으로 Base64Encoder, Base64Decoder 가 포함되어 있으니 사용하시면되고, 다른 프로젝트라면 as3crypto (http://code.google.com/p/as3crypto/)라이브러리를 사용해 보는것을 추천합니다.

비교적 많은 기능을 가지고 있는 AIR 플랫폼이지만 제약도 많습니다. 다만 다른 플랫폼에서는 없는 기능과 사용자 편의성을 몇개 가지고 있다는게 메리트가 느껴집니다. 



Posted by Flash 동강
Adobe AIR2010.09.25 19:59

 Adobe 에서는 Openscreen project의 일환으로 Android OS 에서 돌아가는 Adobe AIR Runtime for Android 를 개발중에 있다. AIR for Android 는 Adobe AIR 를 설치한 Android OS 기반 디바이스에서 설치형 어플리케이션을 운영할 수 있게 해주는 기술(런타임) 이다. 






왜 Adobe AIR 인가?



Adobe AIR 란?


 Adobe AIR는 운영체제에 상관 없이 데스크톱에서 RIA(Rich Internet Aapplications)를 개발 및 배포할 수 있는 런타임입니다. 여러분은 전통적인 데스크톱 개발 기술을 배우지 않고도 기존에 사용하던 웹 기술(HTML, Javascript, Adobe Flash®, Adobe Flex™, Ajax)로 개발한 웹 어플리케이션을 데스크톱에서 실행할 수 있습니다.  (출처 : adoberia.co.kr )



 이전 글에서도 언급했듯이 Flash platform을 이용하여 데스트톱 앱이나, 모바일 앱을 개발하면 높은 확장성을 가질수 있다는점이 가장 큰 장점이다. 데스크탑 환경이나 모바일 환경등 여러가지 플랫폼이 존재하는 상황에서 개발하려고 하는 프로그램이 여러 플랫폼을 커버 할수 있어야 한다면 Adobe AIR 를 도입해 보는것이 좋다. 예를 들어 보면, Twitter 클라이언트로 인기를 끌고 있는 TweetDeck ( http://www.tweetdeck.com/ )은 AIR로 개발한 데스크톱 프로그램으로 Window, Mac, Linux 에서 모두 실행 가능하다. AIR를 사용하지 않는다면 각각의 플랫폼(OS)에 맞춰서 따로 개발해야 하지만, AIR를 이용하여 하나의 결과물로 여러 플랫폼에 설치되는 프로그램 개발이 가능 하였다.



AIR for Android (http://labs.adobe.com/technologies/air2/android/)


 현재는 Adobe AIR 2.5 상태이고, Adobe 에서는 2011년 상반기 릴리즈를 예정으로 Android OS ( 넥서스원, 겔럭시 A,S 디자이너 등과 같은 )를 탑재한 디바이스에서 AIR 어플리케이션을 실행 시킬수 있게 하는 런타임을 개발하고 있다. 현재 프리 릴리즈 상태로 개발자 프로그램에 가입하면 개발중인 버전을 테스트 할 수 있다. 필자가 기대하고 있는건 기존 데스크톱 환경에서 이미 구축되어 있는 게임이나 컨텐츠들을 비교적 쉽게 모바일 환경으로 가져올수 있다는 점이다. 



 하나의 소스를 이용하여, 거의 모든 플랫폼을 커버 할 수 있는 컨텐츠 개발이 가능하다. 



그러기 위해서는 앞으로 가야할 길이 많이 남아 있지만, 앞으로 데스크톱, 모바일 환경에서 Adobe AIR의 가능성은 상당히 기대가 된다. 



Posted by Flash 동강
Flash platform2010.09.19 14:53

 몇일전 Apple 이 아이폰 앱 개발 정책 약관을 변경에 따라 다시 Flash CS5 를 이용하여 아이폰 앱 개발이 가능해 졌다. 정책이 바뀌기전 심사 중이었던 플래시로 만든 앱들도 심사 완료 상태가 되었다. 


 이 문서에서는 두가지,  Flash CS5 의 Package for iPhone 으로 개발하는 아이폰앱과 Adobe 에서 2011년 상반기 런칭을 목표로해서 개발하고 있는 Android for AIR 에 대한 소개 및 가능성에 대해 다룰 것이다. 


 먼저 Package for iPhone 이다. Flash Pro CS5를 이용해 만든 결과물이 아이폰 설치 파일인 .ipa 로 나온다. 개발자는 맥에서 xcode 와 object-c를 이용하여 개발한 .ipa 를 테스트하는 방법과 동일하게 자신의 아이폰에 설치 할 수 있다. 



(출처 : http://www.mikechambers.com/blog/ )


 단순히 Flash 툴을 이용해 ( Actionscript3.0 ) 만든 코드를 LLVM ( Low Level Virtual Machine ) 을 통해 .ipa 로 컴파일하는 것이다. 


 몇 가지 테스트를 해보니, 아이폰에서 제공하는 네이티브 API 를 사용하지 않는 컨텐츠라면 데스크톱 환경에서 사용하고 있는 소스를 아이폰 용으로 컴파일해서 사용해 보니 크게 퍼포먼스가 떨어지지 않는다. 다만 폰(스마트폰)이라는 디바이스적인 한계가 있기때문에 최적화가 필요 하다. 


최적화에 대한 내용은 어도비 에반젤리스트인 마이크챔버스의 블로그 내용을 참고하라.



 장점은 데스크톱에서 사용하는 플래시 컨텐츠의 소스를 그대로 가져다 쓸 수 있다는 점이다. 다만 데스크톱은 마우스를 이용하고 폰은 터치를 이용하는 점이 다를 뿐이지 소스를 전반적으로 수정할 필요는 없다. UI 를 구성하는 뷰단과 이벤트 처리만 바꿔준다면 손 쉽게 서비스가 가능한 앱을 만들수 있다. 




 단점은 굳이 플래시를 가지고 개발을 할 필요가 없다는 것이다. LLVM 의 성능이 향상된다면 컴파일되서 나오는 결과물의 퍼포먼스도 빨라지겠지만 xcode 와 object-c 를 이용하여 개발한 앱이 같은 기능을 한다면 더 빠르다. 그리고 데스크톱 자원을 사용해서 무리 없이 실행되던 게임들도 아이폰에서 실행 시키면 느릴수 있다. 아니 느리다. 퍼포먼스 튜닝이 반드시 필요한 부분이다. 하지만 모바일 용으로 퍼포먼스 튜닝을 한다면 데스트톱에서는 더 빠르게 실행 시킬수 있기 때문에 그 소스는 더 경쟁력이 생길 것이다. 


위의 단점들을 보면 굳이 Flash를 이용하여 아이폰 앱 개발을 할 필요성을 못느낀다. 하지만 같은 소스로 Android 앱까지 개발할수 있다면 생각이 달라질 것 같다.


현재 prerelease 상태로 Android OS 에 설치되는 AIR Runtime 이 개발 중에 있다. 아이폰 앱 개발과는 방법이 조금 다르지만 Flash CS5를 이용하여 안드로이드 앱을 개발하는 건 같다. 다만 안드로이드 OS 2.2 버전 이상에서 설치되며 폰에 AIR Runtime 을 설치해야만 Flash 로 개발한 앱을 설치 할 수 있다. 


자세한 개발 방법은 아래 사이트를 참고 하라.



위의 링크에서 확인할 수 있듯 많은 앱들이 이미 개발 되었다. 아직 prerelease 상태이기 때문에 Flash CS5 Android extention을 설치해야 한다. 설치는 AIR for Android prerelease program 에 가입한 후에 해당 사이트에 가면 다운로드 받을수 있다. 


Adobe AIR 가 폰에 설치되어 있어야만 Flash 로 만든 앱들을 설치 할 수 있다는 단점이 있지만, 이 부분은 정식 릴리즈가 되는 시점에서 해결책이 나올 것으로 본다. 몇가지 앱들을 넥서스원(Android 2.2)에 설치 해봤는데 성능이 기대보다 좋다. 개인적으로 아이폰 앱 보다는 안드로이드 앱 개발의 가능성이 높게 느껴 진다. 


다만, 아이폰과 안드로이드 해상도가 다르기 때문에 같은 뷰를 보여 주기 위해서는 소스 변경이 불가피 하고 안드로이드가 탑재되는 스마트폰도 역시 폰에 불가하기 때문에 성능 최적화가 필요 하다. 하지만, 이를 제외 하면 상당히 괜찮다. 아니 나쁘지 않다. 큰 리소스를 필요로 하는 앱이라면 네이티브 코드를 이용하여 개발하는게 휠씬 좋겠지만, 가벼운 컨텐츠 개발이라면 상당히 매력적인 기능이 될 것이다. 


하나의 코드를 이용하여, 데스트 톱( Windows, Mac, Linux), 모바일 ( 아이폰, 안드로이드 그리고 추가적으로 확장 예정인  OS ) 에서 모두 실행 될 수 있는 앱을 개발할 수 있다는게 Adobe가 내세우는 장점이고 나에게도 큰 장점으로 다가 온다. 다만 아직 갈 길이 많이 남아 있다. 퍼포먼스 측면에서 HTML5를 이용해서 개발한 것과 별 다를게 없다면 HTML5의 확장성에 밀리게 될게 뻔하기 때문이다. 하지만 네이티브 API가 접근 할 수 있다는 것 만으로도 상당히 큰 장점이 될 것이다. 그리고 소스를 재사용할 수 있다는 점은 인력 부족 상태에서 하나의 대안으로 자리 잡을 수도 있을것 같다. (또한 아직 prerelease 다 )


다음은 웹에서 서비스 하고 있는 소스를 이용해 뷰만 바꾼것을 아이폰과 안드로이드 앱으로 컴파일해서 설치해본 영상이다.






'Flash platform' 카테고리의 다른 글

Flash App Performance : Image Sprite Sheet  (0) 2012.01.25
[Mobile] Flash Platform for Mobile  (0) 2010.09.19
Flex for Mobile Devices  (0) 2009.11.06
Flash / Flex 로 만든건 느리다?  (2) 2009.09.08
Posted by Flash 동강
i'T news2010.02.28 10:45

요즘 Steve Job 의 발언으로 시작된 Flash 와 HTML5 에 한 이슈로 웹이 뜨겁게 달아 오르고 있는데요. Mac 환경과 Window 에서 각 브라우져 별로 비교한 자료가 있어서 소개 합니다.


테스트 환경

 

During testing, I followed this procedure:
- Turned off as many background processes as possible
- Updated my graphics card drivers
- Used the same YouTube video for all tests (http://www.youtube.com/watch?v=VJ5KJVCc5C4)
- First, I loaded the page
- Then switched the video to 720p, but left the video playing within the player window (not full screen)
- Then waited until the video completely downloaded (watching the little red bar thingie on the bottom of the player).
- Then I played until about 14 seconds in, waiting until the opening sequence cleared and the real world video began playing.
- Then, I started monitoring and recording the CPU Usage on Windows Task Manager and % Idle on Activity Monitor on a separate computer for 29 data points for each test. Since Task Manager updates once each second, that meant about 30 seconds of testing on Windows. Because Task Manager updates once every two seconds, that means about 60 seconds of video playback on the Mac.
- I used the CPU Usage directly from Windows and subtracted the % idle from Activity Monitor from 100% to derive total CPU utilization on the Mac.
- I rebooted between each test. 
- I ran each test at least twice to confirm results.


테스트한 브라우저


I tried to test the most current versions of all programs on both platforms: Here are the versions.

Windows:

- Apple Safari - Apple has a site called Webkit where you can download beta versions of the Safari browser (http://webkit.org/). Since the improvements in Flash Player 10.1 required the latest version of Safari, I downloaded that version - in Windows, it was 4.0.4 (531.21.10).

- Mozilla Firefox - version 3.6

- Google Chrome - 4.0.249.89 (I tried loading the Beta 5 browser, but it failed several times on this computer).

- Microsoft Internet Explorer - 8.0.7600.16385

- Adobe Flash Player - 10.0.45.2 first, then 10.1.51.95

Macintosh:

- Apple Safari - Webkit version was 4.0.4 (6531.21.10,55180).

- Mozilla Firefox - version 3.6

- Google Chrome - 5.0.307.9 beta

- Microsoft Internet Explorer - 8.0.7600.16385
- Adobe Flash Player - 10.0.45.2 first, then 10.1.51.95


Macintosh 에서의 테스트 결과


Table 1 shows the Macintosh results. Some observations.



Table 1. Macintosh results.


  • With Safari, native playback in HTML5 (at 12.39) was the most efficient alternative, and consumed significantly less CPU than playback via Flash (at 37.41), presumably because Apple uses H.264 hardware acceleration inside of Safari (see here). Flash Player 10.1 reduced playback CPU by 5 CPU % points (from 37.41 to 32.07), or about 14%. Before assuming that Flash is bad, and HTML5 good, please see the Windows results below.


  • With Chrome, playback via Flash and HTML5 were equally inefficient, both much higher than either Safari alternative. This is a head scratcher. I would guess that it means that Google isn't benefiting from hardware acceleration, though I don't know if that's because they "can't" or simply "haven't." Either way, Chrome shouldn't be your browser of choice on the Mac for spending serious time on YouTube.


  • With Firefox, playback via Flash (the only alternative) was slightly less efficient than Safari in Flash, but more efficient than Chrome using Flash or HTML5. Firefox actually slowed down with version 10.1.


I asked Adobe about this and Adobe's Emmy Huang commented “The 3-5% improvement on Safari is what we would expect with Flash Player 10.1 on Safari using Core Animation. Firefox performance however was slightly degraded because Flash Player switched from using QuickDraw to Quartz 2D." Now, on to Windows.




Windows 에서의 테스트 결과


Table 2 shows the Windows results. Some more observations.



Table 2. Windows results.


  • As mentioned, Safari wouldn't play the HTML5 videos on Windows, so I have no Flash vs. HTML5 comparisons there (I tested this on three Windows computer and the HTML5 page wouldn't play on any of them). However, Flash's ability to access hardware acceleration in 10.1 dramatically reduced Safari's CPU consumption from 23.22 to 7.43, a drop of 68%, which really makes you wonder how Flash would perform on the Mac if it could access hardware acceleration.


  • While Chrome's numbers were more efficient on Windows, playback with Flash Player 10.0 was about 24% more efficient than HTML5, while Flash Player 10.1 was 58% more efficient.


  • Version 10.1 also dropped Firefox's CPU utilization by a whopping 73% and Internet Explorer's CPU utilization by 35%.


To these scores, Adobe's Huang added "These results also indicate the strong benefits in performance hardware decoding brings for video playback in Flash Player and other technologies.”



이 문서에서는 결론적으로 Flash 의 비디오 성능은 나쁘지 않다. 또한 HTML5 의 비디오 성능도 좋지 않다. 다만 플랫폼에 따라 달라 질수 있다고 하네요.


원문은 다음 링크에서 확인 할 수 있습니다.


http://www.streaminglearningcenter.com/articles/flash-player-cpu-hog-or-hot-tamale-it-depends-.html


Posted by Flash 동강
i'T news2010.02.05 01:23

Adobe CTO 인 Kevin Lynch 가 Adobe blog 에 쓴 내용 입니다.  Flash 최근의 화두가 되고 있는 스티브잡스의 발언에 대해 웹은 디바이스에 상관없이 컨텐츠와 애플리케이션을 일관되게 액세스할  있는 개방된 환경으로 존재해야 하는데, Apple 은 이를 막고 있다고 언급하고 있네요. 


(출처 : http://durl.me/atqt )

어찌 되었건, Adobe 나 Apple 그리고 앞으로의 웹 생태계가 어떻게 바뀌게 될지 기대가 됩니다


컨텐츠  애플리케이션에 대한 오픈 액세스

작성자 : Kevin Lynch, CTO
원문보기 :http://blogs.adobe.com/conversations/   


 최근
 출시되고 있는 우수한 디바이스에 Flash Player 탑재되어 있지 않다는 사실에 적잖이놀랐을 것입니다.

본래 Flash 시장이 형성되지 않았던  15 전에 (Pen) 컴퓨팅 태블릿을 위해 고안되었습니다초창기에는 낮은 대역폭의 벡터 그래픽을 지원했지만 지난 십여 년간 새로운 기능을빠르게 추가해 나가면서웹의 틈새 시장을 공략했습니다현재는 새로운 활용 방안을 찾는 노력을 기울이고 있습니다일례로 웹상에서의 애니메이션스트리밍 오디오풍부한 인터랙션임의의 폰트양자간 오디오/비디오 커뮤니케이션로컬 저장소혁신적인 비디오 전달 등이 있습니다.

 

HTML 기능이 추가된 Flash 상당히 높은 채택율을 기록하고 있는 가운데상위  사이트의85% 이상에서 Flash 컨텐츠를 사용하고 있으며인터넷이 연결된 컴퓨터의 98% 이상에서Flash 실행되고 있습니다. Flash 웹상의 대부분의 캐주얼 게임비디오  애니메이션에사용되고 있으며 Nike, Hulu, BBC, Major League Baseball  유명 브랜드에서 Flash 사용하여 10 이상에 달하는 전세계 사용자에게 매력적인 경험을 전달하고 있습니다.

 

Flash 미래에 있어서 지금이 가장 중요한 시기입니다. 현재 PC 외에도 다양한 디바이스들이 하루가 다르게 출시되고 있으며많은 수의 디바이스가 인터넷 검색에 사용될 것입니다따라서 컨텐츠  애플리케이션 제작자와 사용자는 PC에서 Flash 통해 얻어질 것으로 기대되는 경험 원활하고 일관되며 풍부한 경험을 디바이스에도 동일하게 전달하기 위해 많은 과제들을 해결해야  것입니다. Flash 엔지니어링 팀은 이를 실현하기 위해 다양한 디바이스에서 Flash Player 철저히 분석해 왔습니다.

 

이러한 노력의 결과로 Adobe 시장 선도적인 제조업체를 대상으로  스마트폰용 Flash Player 10.1 선보이려고 합니다이러한 제조업체에는 스마트폰 뿐만 아니라 태블릿넷북,인터넷 TV  시장을 형성하고 있는 Google Android, RIM Blackberry, Nokia, Palm Pre, 기타 업체들이 있습니다. Flash 통해 고객은 전체 웹을 검색할  있으므로 브라우저에서Flash 사용하고 있는 이러한 디바이스는 경쟁력을 갖추게 됩니다. 이는 사실상 오픈 스크린프로젝트(Open Screen Project) 통해 이루어지고 있으며, Adobe 50 이상의 파트너와 협력하면서 다양한 디바이스에서 이를 실현하기 위해 노력하고 있습니다. 예를 들어최근 선보인 구글 넥서스원(Nexus One) Flash Player 10.1 통해 탁월한 브라우저 경험을 선사할 것입니다.

 

그렇다면 Apple 디바이스에서 실행 중인 Flash 어떨까요? Adobe Flash 기반으로iPhone 독립 실행형 애플리케이션을 구축할  있게 함으로써, Flash 기술은 이러한 디바이스에서의 사용을 넓혀 나가기 시작했습니다실제로 이러한 애플리케이션  일부는FickleBlox, Chroma Circuit 같은 Apple App Store(앱스토어)에서 이미 제공되고 있습니다동일한 솔루션은 iPad에서도 작동될 것입니다. Adobe 이러한 디바이스의 브라우저에서Flash 지원하기 위한 준비를 마친 상태이며 이제 Apple에서 사용자를 위해 이를 허용하는것만이 남아 있습니다그러나 Apple 지금까지도 어도비의 이러한 협력 요청을 받아들이지않고 있습니다.

 

장기적으로  , Flash 대한 요구 사항을 대신하게  것으로 HTML 꼽히고 있는 특히 최근 개발된 HTML 5 버전이 출시되면  움직임은 본격화될 것으로 전망하는 사람들이 많아지고 있습니다그러나 오늘날은 물론이거니와 앞으로도  기술이 다른  기술을 대체하게 되지는 않을 것으로 예상됩니다.

 

Adobe HTML 발전을 지원하고 있습니다앞으로 HTML 진화를 거듭할수록 Adobe 소프트웨어에  많은 기능이 추가될 것으로 기대하고 있습니다. HTML Flash 기능을 안정적으로 수행할  있다면, Adobe 많은 시간과 수고를   있지만사실상 그렇게  가능성은 거의 없습니다. 비디오 부문의 경우 현재 웹상에 있는 비디오의 75% 이상에서 Flash 사용되고 있는 데도 불구하고브라우저  포맷 통일이 이루어질  없으므로 사용자와 컨텐츠제작자는 비호환성이라는 문제를 안게 되고 결국 HTML 비디오 구현은 어두운 뒤안길에 남겨질 것입니다.

 

HTML 진보에도 불구하고 Flash 생산성과 표현 기능은  커뮤니티에서 가희 독보적이라고   있습니다. Flash 팀은 지난 십여 년간 불가능하다고 여겼던 경험을 구현해 왔던 것처럼 앞으로도 더욱 혁신에 박차를 가할 것입니다. 1년도   되는 짧은 시간 동안 대다수의 클라이언트를 업데이트할  있었던 Flash 다양한 브라우저 전반에 걸쳐 HTML 수행하는 것보다 훨씬 빠른 시간 내에 고객에게 이러한 혁신 기술을 선보일  있을 것으로 기대를모으고 있습니다.

 

Adobe 시간장소매체에 구애 받지 않고 아이디어와 정보를 생성하고 전달할  있는 방식을 혁신하고 있으며 디자이너와 개발자가 자신의 독창적인 아이디어를 마음껏 펼칠  있는 방법을 고안해 내는  전력을 다하고 있습니다또한 가장 생산성이 우수한 툴과 컨텐츠 애플리케이션을 배포할  있는 광범위한 기능을 창의적인 관리 방법과 접목시키는  또한 Adobe 미션이라고   있습니다. Adobe 고객이 목표를 달성하고 기술 격차를 극복할  있는 기술 혁신을 이뤄내는  필요한 모든 기술과 포맷을 지원하고 있습니다. FlashHTML 결합되면 최고의 기술이 탄생하게  것입니다그렇게 되면 누구나 웹상에서  기술을 사용하여 최상의 경험을 제공할  있게  것입니다.

 

아이디어와 정보를 활용하는 것은 사용자가 선택한 컨텐츠와 애플리케이션을 보고 서로 인터랙션할  있는 개방된 에코시스템과 자유가 존재한다는 것을 의미합니다 오픈 액세스 모델은 가장 효율적인 모델로 그간의 여러 시행착오를 거쳐  효과가 입증되었습니다이와 반대로 폐쇄 모델에서는 사용자가 개별 컨텐츠와 애플리케이션을 보거나 승인  거부할  있는 사항을 제조업체에서 결정하려고 했습니다웹은 디바이스에 상관없이 컨텐츠와 애플리케이션을 일관되게 액세스할  있는 개방된 환경으로 존재해야 한다는 데는 이견이 없을 것입니다.

 

Adobe 고객들이 최상의 업무 성과를 달성하고 운영 체제브라우저  다양한 디바이스 전반에 걸쳐 효과적이고 안정적으로 전세계 모든 사용자에게 다가갈  있도록 지속적으로 지원해 나갈 것입니다.

Posted by Flash 동강
Flash platform2009.11.06 01:14

얼마 전에 MAX 2009 에서  Flex for Mobile Devices 라는 주제로 발표한 내용 입니다. 점점 Adobe Flash platform 의 모든 디바이스에 대한 지원이 가능해 지고 있는데요. PC 에서도 비교적 무겁다는 인식이 강한 Flex framework 가 과연 더 환경이 안좋은 Mobile 에서 어떤 퍼포먼스를 낼수 있게 될지 기대가 되네요.




Posted by Flash 동강
Actionscript3.02009.05.25 00:38

문서 원본 : Adobe 기술문서
작성된 날짜 : 2009-05
저자 : 강동혁(동강)
저자 소개 : Daum communications 에서 UI 개발 업무를 하고 있으며, Flash 커뮤니티에서동강이라는 닉네임으로 활동하고 있다. 뭐든지 사용하기 편해야 한다는 생각을 가지고 개발을 하고 있으며, 최근엔 새로산 자전거를 자주 못타고 다녀 아쉬워 하고 있다.


   <목차>

-Display 객체들의 다양화

-Display List구조의 변화

-객체의 심도 관리 향상(Depth에서 index)

-Depth방식에 비해 Index방식이 효율적인 점

-이벤트 모델의 변화



Flash를 하던 많은 사람들이 AS3.0이 나오고 나서 혼란스러웠던 이유는 두 가지이다.

첫 번째로 Flash에서 핵심이라고 할 수 있는 Display 객체생성을 정의하는 구조가 바뀐 점이고, 두 번째로는 사용자의 반응에 따라 이벤트를 발생 시켜 주는 이벤트 모델이 바뀐 점이다.

또한 AS2.0은 직관적인 문법이지만, AS3.0에서는 간단한 마우스 이벤트를 만들려고 할 때도 코드의 길이가 길어져 버려, AS2.0 사용자들에게 'Flash가 애니메이션 툴의 기능은 사라져 버리고 개발자를 위한 툴로 바뀌었다.' 는 원성을 듣기도 하였다.

하지만, AS3.0에서 코드를 길게 작성해야 이벤트를 만들 수 있다는 말은 AS3.0을 겉으로만 접한 사람들의 오해다. 오히려 AS3.0 은 이벤트 구조를 잘 설계하여 코드를 줄일 수 있고, 덩달아 SWF가 시스템에서 차지하는 메모리의 용량도 줄일 수 있는 장점을 안겨 주었다.

이번 장에서는 AS3.0 AS2.0에 비해 어떤 점이 달라졌고, AS3.0과 하위 언어와의 호환성에 대해 이야기해 보겠다.

 

-Display 객체들의 다양화

Flash 8까지의 AS1.0 2.0에서는 거의 대부분의 객체들은 MovieClip을 통해서 생성됐다.

여러 유형의 객체들이 MovieClip 객체 하나에 모두 포함됐기 때문에 불필요한 메모리와 시스템 리소스를 차지하는 원인이 되었다.

예를 들어 타임 라인이 필요 하지 않는 원을 만들거나, Flash에서 image를 불러와서 사용할 때도 MovieClip을 통해 객체를 만들었기 때문에, 만들어진 객체에는 항상 타임라인이 존재하였다. 이 타임라인이 불필요한 메모리를 차지했던 것이고, MovieClip에 있는 타임라인을 관리하기 위해 사용되었던 시스템 리소스가 증가하게 됐다. 하지만 AS3.0에서는 AS2.0에서 대부분 MovieClip으로 만들어졌던 Display List 객체들을 상황에 맞는 객체들로 만들 수 있도록 객체의 유형이 다양해졌다.

 

대표적인 유형은 MovieClip, Sprite, 그리고 Shape이다. Sprite MovieClip에서 Timeline을 제거한 객체이다. 타임라인을 제거하였기 때문에 MovieClip에 비해 메모리 및 리소스 사용을 줄일 수 있고, Timeline 외에는 MovieClip과 같은 속성 및 메소드를 가지고 있기 때문에 거의 비슷한 용도로 사용할 수 있다.

Shape Sprite와 비슷한 부분이 많다.(Graphics에 포함되어 있는 드로잉API를 이용할 수 있다.)

하지만, 자식 객체를 가질 수 없고 마우스 클릭 이벤트를 지원하지 않는 차이를 가지고 있다. Shape Sprite에 비해 오버헤드가 적고 Sprite가 지원하는 속성에 대한 메모리를 사용하지 않아도 되기 때문에 속도가 향상되고 메모리를 적게 사용한다.

그래서 마우스 이벤트가 필요없는 그래픽 객체를 만들고 싶을 때는 Shape를 사용하는 게 좋다.

각각의 객체를 하나씩 비교 한다면, 많은 차이가 없다. 하지만 객체의 수가 많아진다면, 덩달아 컴퓨터에 부담을 많이 주게 된다. 예를 들어 MovieClip Sprite가 컴퓨터 리소스를 차지하고 있는 양의 차이가 10이라고 하면, 이러한 객체들을 100개를 쓸 일이 생기게 되면 컴퓨터가 감당해야 할 리소스 부담은 MovieClip을 사용했을 때 Sprite보다 1000이 더 나게 된다.

덩치가 큰 프로그램에서 이러한 차이는 곧바로 퍼포먼스의 차이로 이어 지기 때문에, Timeline이 필요 하지 않은 객체는 Sprite로 정의 하는 습관을 가지고 있어야 한다.

 

- Display List구조의 변화

앞 절에서 자식 객체를 포함할 수 있는 객체는 Sprite이고, 포함할 수 없는 객체는 Shape라고 설명했다.

Sprite DisplayObjectContainer(표시객체컨테이너)이기 때문에 자식 객체를 가질 수 있고, Shape DisplayObject(표시객체)이기 때문에 자식 객체를 소유할 수 없다.

 

AS3.0에서 달라진 Display List의 구조는 DisplayObject를 기본으로 하여 구성된다.

SWF에서 사용자에게 보이게 되는 모든 객체들은 모두 DisplayObject 또는 DisplayObjectContainer의 상속을 받아서 만들어진 것이다. Display List의 구조는 아래와 같다.

그림 1 AS3.0 Display List 구조도

 그림에서 볼 수 있듯이 MovieClip, Sprite, Shape 모두 DisplayObject의 상속을 받아서 만들어진다. 하지만, MovieClip Sprite DisplayObjectContainer의 속성을 한 번 더 상속 받기 때문에 자식 객체를 포함하는 속성을 가지고 있다.

자식 객체를 소유할 수 있다는 의미는 바구니가 되어 이것, 저것을 담을 수 있다는 의미이다.

DisplayObjectContainer의 상속을 받은 객체 만이 addChild(담기) removeChild(꺼내기) 메소드를 사용할 수 있다. AS2.0에서는 아래 그림과 같은 구조로 객체들을 정의 하고 있다.


그림 2 AS2.0의 객체 구조도

 객체들을 AS3.0과 같이 상속에 의해 구현한 것이 아니라, Object를 통해 직접적으로 구현하고 있다. 그만큼 직관적으로 구조를 이해 할 수 있다는 장점이 있지만, 객체의 속성을 중복 구현하여, 효율이 떨어진다는 단점이 있다.

새로운 Display List Flash의 가장 핵심이라고 할 수 있다.

Flash에서 사용되는 모든 기능들은 Display List를 통해 구현이 되고 사용되기 때문이다. 그 만큼 중요한 부분을 차지하고 있기 때문에 비교적 이해하기 어려운 내용을 담고 있다.

 

- 객체의 심도 관리 향상(Depth에서 index)

 

Flash Display List에는 심도가 존재한다.

Layer와 별개로 같은 레이어 상에 존재하는 객체들도 위, 아래가 존재하여 위에 있으면 보이고 아래 있으면 위에 있는 객체에 가려서 안보인다. AS1.0 2.0에서는 다음과 같은 메소드를 사용하여 객체의 위, 아래를 조절 하였다.

 

AS2.0에서 객체 심도를 관리하기 위한 메소드

-getDepth() : Number

-getNextHighestDepth() : Number

-getInstanceAtDepth(depth: Number) : MovieClip

-swapDepths(target: Object) : Void


AS3.0
에서는 Display List 구조가 바뀜에 따라, 위와 같은 메소드는 모두 아래와 같이 바뀌었다.


AS3.0에서 객체 심도를 관리 하기 위한 메소드

getDepth() -> getChildIndex()

getNextHighestDepth() -> 직접적으로 대칭 되는 메소드는 없다. 하지만 구현 가능하다.

getInstanceAtDepth() -> getChildAt();

swapDepths() -> addChildAt(), setChildIndex(),swapChildren(), swapChildredAt() 


 

메소드 변경에 대한 더 자세한 내용은 Adobe에서 제공하는 AS2.0마이그레이션을 보면 자세히 기술 되어있다.

AS2.0에서 getNextHighestDepth()를 이용하여, 가장 높은 Depth를 할당하여 다른 객체들 보다 위에 위치하게 함으로서 사용자들에게 보이게 한다거나, swapDepths를 이용하여 이미 존재하고 있는 객체들의 Depth를 바꿔서 객체들끼리 가려지는 정도를 조절하였다.

AS2.0에서 적용되어 있던 심도 관리 개념은 Depth(깊이) 였지만 AS3.0에서는 메소드 이름 뿐만 아니라, 객체의 심도를 관리하는 개념 자체가 바뀌었다.

 

AS2.0에서는 Depth(깊이)개념을 사용하였다.

깊이란 순서가 없이 사용자가 지정한 깊이에 객체를 올려놓을 수 있음을 뜻한다. 사용자가 지정하는 깊이는 음수든 양수든 상관없고, 지정한 값들 사이에 빈 공간이 존재해도 상관없다. 아래 그림이 Depth의 특징에 대해 말해 주고 있다.


 

1) -1 depth부터 2 depth까지 객체들이 놓여 있다.

2) 100 depth에 객체를 추가한다. 100 depth는 추가되어, 존재하지만, 3~99depth까지의 공간은 빈 공간으로 남아 있다.

3) removeMovieClip()을 통해 1 depth에 있는 객체를 제거하면 1 depth는 빈 공간으로 존재하게 된다.

4) 2 depth에 객체가 있음에도 불구하고, 2 depth에 새로운 객체를 올려놓게 되면 기존에 있던 객체는 사라지게 된다.

 이렇게 AS2.0에서는 Depth로 절대적인 위치를 결정 하였다. 하지만 AS3.0에서는 Index라는 개념을 사용하여, 객체의 위치를 상대적으로 결정하도록 바뀌었다.

Index는 순서라는 의미이다.

Display List에 보여지는 객체들은 모두 순서가 부여 되고, 순서가 높을수록(숫자 크기가 클수록) 위에 위치하게 됩니다. 순서는 양수 값만이 가능하고, 0부터 차례대로 부여하게 된다. Depth처럼 2depth 다음에 100depth가 올 수가 없고, 빈 공간이 존재하지 않는다. 아래 그림이 Index의 특징에 대해 말해 주고 있다 



1) 0 index부터 3 index까지 객체들이 놓여 있다.

2) 100 index에 객체 추가를 시도하였지만, 에러가 발생한다.

3) 1 index에 객체를 추가하니, 기존의 index들이 한 칸씩 위로 올라가며 재정렬된다.

4) 3 index에 있는 객체를 삭제하니, 4 index에 있던 객체가 3 index로 내려오며 재정렬된다.

이렇게 AS3.0에서는 index를 이용해 상대적으로 위치를 정하는 방식으로 변경하였다.


 

-Depth방식에 비해 Index방식이 효율적인 점

Index방식은 객체에 순서를 부여해서, 부모 객체에서 자식 객체를 탐색할 때, 매우 빠르게 조회할 수 있게 해 준다. Index들은 단일 배열로 만들어져 getChildIndex() getChildAt()으로 탐색하는 것을 도와준다. 예를 들어 다음과 같은 코드를 사용하면, 파라미터로 넘어온 객체의 자식객체에 대해 빠르고, 쉽게 알 수 있다.



 그에 비해 Depth방식은 깊이의 위, 아래는 있어도, 그 위, 아래 정보가 단일 배열로 정리가 되어 있지 않기 때문에 탐색에 오랜 시간을 소요된다.
예를 들어, 1쪽부터 200쪽 분량의 책이 있다고 가정해보자. 그런데 갑자기 계획이 변경되어 100쪽 부근에 50쪽 정도의 새로운 챕터를 넣어야 한다.

Index 방법에서는 우리가 현실 생활에서 대처하는 방법대로, 새로운 챕터는 101쪽부터 번호가 매겨지고, 뒤에 있던 내용들은 50쪽이 끝나면 이어져서 250쪽 짜리 책이 완성된다.

하지만 Depth 방식으로 하면 문제가 발생한다. 기존의 200쪽 분량의 책에 50쪽 분량의 새로운 챕터를 넣으려면 기존의 100쪽부터 150쪽까지가 새로운 내용으로 덮어 씌어지게 된다. 이런 상황을 막기 위해 미리 swapDepths()를 통해 100쪽부터 200쪽까지를 150쪽부터 250쪽까지로 옮기고 빈 공간에 새로운 챕터를 넣으면 되지만, 시간과 리소스 낭비가 많아지게 된다. 더구나, 여기에서는 50쪽만 추가하는 것이었지만, 50쪽이 100쪽이 될 수도 있고, 1000쪽이 될 수도 있다. 이와 같이 Index방식은 Depth방식에 비해 사용하기 편하고, 휠씬 효율이 높은 심도 관리 방법이라고 말할 수 있다.

 

- 이벤트 모델의 변화

Flash에서 중요한 부분을 차지하고 있는 이벤트 모델 역시 바뀌었다. 이전 버전의 AS에서는 이벤트를 처리하는 방법이 여러 가지가 있었다


AS2.0에서의 이벤트 핸들링 방법

- on() 이벤트 핸들러와 onClipEvent()핸들러 : 객체 안에 코드를 입력하여 해당 객체에 대한 이벤트를 발생시키는 방법이다. 쉽게 사용할 수 있지만, 객체 안에 있는 코드를 찾기가 어려워서 프로젝트 협업 작업에 어려움이 발생한다.

- 콜백 함수 이벤트 핸들러 : 객체. onRelease XML.onload와 같이 객체에 직접 콜백 함수를 등록함으로써 발생시키는 방법이다. 지정된 이벤트에 대해 콜백 함수 하나만 사용할 수 있다. 예를 들어 AS2.0에서 아래와 같은 코드를 실행하면 두 번째 콜백 함수만이 동작 하게 된다.



- 이벤트 리스너 : addListener() addEventListener()를 이용하여 발생시키는 방법으로 리스너 객체와 함수를 만든 후에 리스너를 등록해야 하므로 번거롭지만, 콜백 함수와는 달리 해당 이벤트에 여러 개의 리스너를 만들어서 모두 사용할 수 있다.




여러 개의 이벤트 처리 방식이 상황에 따라 사용되었지만, AS3.0에서는 하나로 통일되었다. 하나로 통일된 새 이벤트 모델은 DOM Level3 이벤트를 기초로 하고 있다.

DOM Level3 이벤트는 기존의 이벤트 모델보다 더 빠르게 이벤트를 발생시킨 객체를 찾아낼 수 있고, 그에 따른 이벤트를 호출해준다. 또한 이전 버전의 이벤트 모델은 이벤트 흐름을 가지고 있지 않았다. 무조건 이벤트를 발생시킨 객체만이 콜백 함수나 이벤트 리스너를 호출 할 수 있었지만, AS3.0에서는 이벤트 흐름에 연관된 객체들은 모두 이벤트 리스너를 호출할 수 있다. 예를 들어 그림 3과 같이 A, B 객체가 있고 B 객체에 마우스 이벤트를 등록했다면, A B 두 객체 모두 이벤트 흐름 안에 있기 때문에 이벤트 리스너를 호출할 수 있다.








AS3.0을 시작하는 분들이 시작부터 어렵다고 느끼는 이유 중 하나가 바로 이벤트 모델 때문이다.

AS2.0에서는 그림4 코드와 같이 단 3줄에 끝나는 것이 AS3.0에서는 이벤트 리스너를 추가하고, 이벤트 핸들러를 만들고, 이벤트 핸들러에 해당 이벤트(MouseEvent)에 대한 파라미터를 넘기는 작업을 해야 하기 때문에 비교적 복잡하게 보이기 때문이다. 하지만 사용해 보면 휠씬 효율적이라는 것을 느낄 수 있다.

AS3.0의 이벤트모델만이 가지고 있는 이벤트 흐름을 이용하여 복잡한 이벤트 발생 구조도 단순화 시킬 수 있으며, 이벤트 리스너의 등록과 제거 과정을 통해, 효율적인 메모리 관리와 객체지향 코드를 구현할 수 있다.

 

글을 마치면서

1부와 2부에 걸쳐서 AS3.0을 왜 사용해야 되고, 어떻게 사용해야 하는가에 대해 다루었다. 많은 사람들이 Flash platform을 도입하면서 Flash 시장도 많이 넓어 지고 있지만, 한간에서는 아직도 “Flash는 배너를 만드는데 사용하는 애니메이션 툴이다.” “Flash를 사용하면 느려진다.” 라고 생각하는 사람들이 있다.

하지만, 이러한 걱정들은 구시대의 산물이 되어 가고 있고, Flash platform이 단지 표현(User Interface)을 위한 수단만이 아니라, 표현과 퍼포먼스를 모두 만족시킬 수 있는 도구로서 나아 가고 있다.

AS3.0은 좀 더 사용자를 만족 시키기 위해 반드시 이용해야 하는 언어이다.


관련 문서: 왜 Actionscript3.0을 사용해야만 하는가?



Posted by Flash 동강
Review2008.12.11 16:04

Adobe RIA 캠프를 다녀 왔습니다. 교보타워 23층 이벤트 홀에서 진행 되었구요.  Adobe 글로벌 이벤젤리스트인 라이언 스튜어트와 마이크 챔버스 가 메인 아젠다를 발표하였고,  오창훈님, 이희덕님, 김춘경님 께서 AIR 와 매쉬업 그리고 Pixel Bender 의 주제로 발표를 해 주셨습니다. 발표가 시작 되고, 통역은 필요 없다는 생각을 하며 열심히 들어 보려고 안간 힘을 썼지만.. 역시 역부족임을 느끼고 굉장한 내공을 자랑하시던 통역사님에게 귀를 기우리게 되었습니다.



이번 Camp 에서 가장 관심이 가던 주제는 역시 Thermo 와 Flex 4 에 관한 내용이었습니다.  

 우선 Thermo , 많은 사람들이 기대하고 있듯이 다른 Adobe 제품군과 놀라운 호환성을 가지고 있었습니다. 특히 놀라웠던 점은 Adobe illustrator CS4 로 그린 벡터 객체가 Flex 로 불러와져서 코드화되는 모습이었습니다. 단순히 이미지를 Bitmap 으로 사용하는게 아니라, 그 벡터로 그려진 객체 자체의 속성을 코드 레벨에서 조절하는 것이 가능해 졌습니다. 이러한 기능들이 어떻게 사용되는거에 따라 다르겠지만, 새로운 UI 스타일이 가능해 지지 않을까 생각됩니다. 

 단순히 일러스트레이트에서 원을 그리면, Flex 에서는 원을 그리는 코드가 생성 됩니다. 여기 까지는 별거 아닌거 같지만, 더 복잡한 디자인을 일러스트레이터로 할 경우 그 디자인이 코드로 생성되어 지고 코드 레벨에서 그 속성들을 바꿀수 있다면, 단순히 디자인 한거 만으로도 컴포넌트가 생성된다고 생각하시면 될것 같습니다. 실제로 나와서 실무에서 어떻게 쓰일지는 모르겠지만, 그 가능성에 놀랐습니다.

 그리고 이어진 발표,  아직 많은 사람들이 매쉬업을 모르고 있거나, 그 필요성을 못느끼고 있는게 사실 입니다. 하지만 오창훈님의 발표로 그 필요성에 대한 의문점들이 어느 정도 해소 되는 자리 였습니다.

다음 devday 에 이어 두번째로 뵙게된 이희덕님, 역시 재치 있는 입담으로 즐거운 발표 시간이었습니다. RIA 는 소녀**** 다.

온라인 상에서만 뵙다가 오프라인에서 처음 뵌 딴동네님, Pixel Bender 에 대해 mike chambers 가 언급 했을때는 감이 안왔는데, 딴동네님의 발표로 그 가능성을 보게 된 자리 였습니다. 

초반에 영어의 압박으로 약간 졸긴 했지만, 정말 유익한 새로운 정보와 나태해져 가던 의지에 기름을 부어준 Camp 였습니다. Thermo 와 Flex 4 모두 2009 년 되야 만나 볼 수 있다니, 좀 아쉽지만 특히 Thermo 는 많이 기다려 집니다. 그리고 끝나고 Camp 에 오신 분들과의 소주 한잔, Flex 4 u 분들이 많이 있으셨는데 잠깐동안 이었지만 반가운 자리였습니다.   

앞으로 계속 이런 행사가 지속 되었으면 하는 바램입니다.

짤빵으로. 검쉰님 사진, 이해 하실꺼라 믿고 있습니다.



'Review' 카테고리의 다른 글

액션스크립트 카페 FDT 를 만나다.  (0) 2008.12.11
RIA CAMP  (0) 2008.12.11
Flash , Flex , Actionscript 관련 책 추천목록  (0) 2008.12.11
Daum devday 4th  (0) 2008.12.11
Posted by Flash 동강
TAG Adobe, RIACamp
Review2008.12.11 15:18
Flash 를 처음 시작하시거나, AS3.0 을 처음 시작 하면서 가장 난감한것은 무엇으로 어떻게 시작 해야 되지일 것 입니다. 그중 카페에 가장 질문이 많이 들어 오는 것도 책 추천해 달라는 질문이지요. 그래서 제가 본것과 좋다고 들은 것을 토대로 정리를 해 보았습니다. 이름하여  

동강의 믿거나 말거나 책 추천 :)

: Actionscript 3.0 에 대한국내서가 몇권 없기 때문에 as 버젼에 상관 없이 나열 하였습니다. 그리고 Flash 가 아닌  Actionscript 를 기준으로한 추천 입니다. :) 

     
Flash ActionScript 원리

임종기

영진.COM 2005.04.20


.

/중급

임종기 (아담) 님이 쓰신 Actionscript1.0 2.0 개념서 입니다. 액션을 처음 시작하신 다면 무지막지한 두께 때문에 놀라실 꺼라 생각 됩니다. 하지만 AS2.0  대한기본적인 프로그래밍 방법에서 시작해서 이벤트 흐름, 그리고 실제로 바로 사용해도 될 만한 예제 들로짜여 있습니다. 예제들을 하나하나 따라 하시면서 Actionscript가 이런 것이구나, 아는 것은 물론이고, 책을 독파 하고 나면 책을 찾아 가면서 어느 정도 알 것같다는 느낌을 받으실 것이라 생각됩니다. 액션 공부를 이책으로 시작한 기억이 나네요.

  


플래시 내비게이션 패턴 18

윤용호

길벗 2004.10.07

.

/중급

윤용호 님이 쓰신 플래시 내비게이션 패턴 18 위의 임종기 님이 쓰신 책이개념서 였다면 이 책은 활용서 라고 말하고싶습니다. 4년 전에 나온 책임에도 불구하고 꾸준히 사람들이 찾고 있는건 18 가지패턴에서 볼 수 있습니다.AS3.0 을 공부 하고 계신다면 이 책에서 구현하고 있는 것들을 3.0 으로 바꿔서 구현해 보는 것도 매우 도움이될거라생각 합니다.



.

/중급

패턴 18 이 네비게이션에 대해 다루었다면 땡굴이 형님의 책은 실무에서 사용되고 있는 22 가지에 대해다루고있습니다. 서비스는 되는 것들은 많이 보았는데, 어떻게 구현한거지 라고 궁금해 했던 것들을 이책을 보시면 어느 정도 해소 하실거라 생각합니다. 특히 땡굴이 님의 특유의 설명으로 알기 쉽게 쓰여있습니다.

 


신명용의 플래시 MX 액션스크립트

신명용

제우미디어 2002.10.30

플래시 MX 액션스크립트

신명용

제우미디어 2004.08.13

초/중급

말이 필요 없는 Actionscript 베스트 셀러 입니다. 1권에서는 기본적으로 따라 하는 액션들과, 물리, 수학, 3D 에 대한 내용을 다루고 있고 2권에서는 Data Access 부분에 대해서 다루고 있습니다.


콜린 무크의 Flash ActionScript 2.0

콜린 무크 | 양주일 옮김

한빛미디어 2005.04.11

Essential ActionScript 3.0

Colin Moock

O&apos;REILLY 2007.06.01

.

중급

지금까지소개 해드린 책들이, 프로젝트 위주의 2.0 무작정 따라하면서 알아 가는 책이었다면

콜린무크의 Actionscript Flash as 에서 제공하고 있는 Class 들과 API 그리고 Class 기반 작업에 대해다루고 있습니다. 프로그램을 안해보신 입문자라면 어렵게 느껴질 수도 있습니다. 하지만 Actionscript 를 하시는 분들이라면 한번쯤은 읽어 보셨을 만한 책입니다. 3.0 에 대한 번역서는 아직출간되지 않았으니 늣풀님이 블로그에서 번역 하고 있는 문서를 봐도 도움이 될거라 생각 됩니다



 

.

중급

유명한 Cookbook Actionscript3.0 버젼 입니다. 어떤 주제에 대해 찾아 보기 편하게 Chapter 를 구성하고 있습니다.찾아 보기 편한 책 이긴 하지만, 한번씩 쭉읽어 보면서 따라 해 보면은 따라한 내용들이 모두 프로젝트를 하는데 도움이되는 Tip 과 지식이라는 것을 느낄 수 있을 것 입니다. 


 

.

/중급

Actionscript3.0이 나오고영문 문서에 허덕이고 있을때 가뭄에 단비와 같이 비를 뿌려준 책 입니다Actionscript3.0을 좀더 프로그래밍방법론 쪽으로 소개 하고 있습니다. F1의 압축 판이라고 비유하고 싶습니다. 많은 것을 다루고 있고, 접근 방법을 제시하고 있습니다 


 

예제로 배우는 Adobe 플렉스

옥상훈

에이콘출판 2008.04.21

.

/중급/고급

요즘 한창 보고 있는 플렉스 책 입니다. 원래 Java 를 하시던 분이라 책에서 Java 의 향기를 느껴 집니다기초 부터 플렉스와 AIR 에 대해 다루고 있고, 특히Data 연동에 대한 부분이라든지, 프레임 윅 사용하는 방법등 실제로 Flex 프로젝트에 적용할 수 있는 주제들을 다루고 있습니다

 

.

//고급

우선 책의 두께가 굉장 합니다. Flex mxml Actionscript 를 보다 근본적인 프로그래밍 방법론 적으로 책을 구성하고있습니다. 레퍼런스에서도 찾기 힘든 부분이나 어려웠던 부분을 다루고 있고actionscript 에서의 OOP 분야에 대해서도 다루고 있으니 옆에 두고 천천히 보시라추천하고 싶은 책 입니다.  


Adobe FLEX 3 실전 트레이닝 북

제프 태퍼,마이클 라브리올라,매튜 볼스 | 신호승,정선우,이원영 옮김

위키북스 2008.07.31

아직 접해 보지는 않았지만 Flex2 버젼의 책의 명성 답게 기대가 되는 책 입니다.


 

 

그밖에 영문으로된 책 이지만 영어에 자신 있는 분들은 아래의 책들도 보시면 좋을 것 같습니다.

ActionScript3.0 Design Patterns: Object Oriented Programming Techniques

Bill Sanders,Chandima Cumaranatunge

O_REILLY 2007.07.01

LearningActionscript 3.0 Design

Shupe, Rich/ Rosser, Zevan

Oreilly & Associates Inc 2007.04.01

Head FirstObject-Oriented Analysis & Design

브렛 맥래프린, 게리 폴리스, 데이빗 웨스트 | 신광연, 박종걸 옮김

.            한빛미디어 2007.05.31 

 

 

위에서 나열한 책들 중에 지금 보고 있는 책들도 있고, 몇번씩 볼 만큼 좋은 책들이지만

 

책은 그냥 책 일 뿐입니다 

단지 F1 을 눌러 가면서 google 에서찾아 가면서 삽질 하고, 남이 만들어 논거 디컴파일 해 보고 내가 기획하고 생각해서 만들어 봐야 실력은늘어 가는 것 같습니다. 따라 하고 고쳐 쓰는 정도의 반쪽 짜리 실력에 머무르느냐와 흔히 말하시는 고수가 되는 것은 "어떻게 노력 했는가?" 의 차이가 아닐까 생각해 봅니다

'Review' 카테고리의 다른 글

RIA CAMP  (0) 2008.12.11
Flash , Flex , Actionscript 관련 책 추천목록  (0) 2008.12.11
Daum devday 4th  (0) 2008.12.11
당신은 웹2.0 개발자 입니까?  (0) 2008.12.11
Posted by Flash 동강
Actionscript3.02008.12.11 01:08
 Actionscript3.0 이 나오고 많은 사람들이 Actionscript2.0 에서 3.0 으로 넘어 왔고 그 강력함에 대해 매우 기뻐하고 있다. 그러나 아직 디자이너와 소통을 하기 위해 새로운 언어로 넘어 오지 못하는 많은 사람들이 있다. 그 이유는 여러가지가 있겠지만 같은 작업을 하는거에 대해 Actionscript3.0 이 더 복잡하다는 잘못된 생각들이 있기 때문 이다. 이 기술문서에서는 당신이 왜Actionscript3.0 을 사용해야만 하는지에 대해 알려주고 Actionscript3.0 에 대한 잘못된 생각들을 풀어 주겠다.

 우리는 Actionscript 코드를 사용하는 사람들이 두 그룹이 있다는 것을 알게 되었다. 첫번째는 hardcore developer로 이루어진 그룹이다. 그들은 일반적으로 Java 나 C# 을 미리 접하고 사용했던 사람들이다. 그들에겐 Actionscript3.0 은 반가운 언어 였을것이다.  왜냐하면 그들이 이미 알고 있던 언어들과 비슷하기 때문이다. 두번째 그룹은 interactive designer 로 이루어진 그룹이다. "Interactive designer" 이란 플래시 프로그래밍을 하므로 해서 그들의 비젼을 높일수 있는 디자인 기반의 혹은 애니메이션을 하는 사람들을 말한다. Interactive designer는 종종 타임라인에 코드를 삽입한다. 하지만 그들도 역시 약간의 프로그래밍에서의 object-origented programming(OOP) 를 알고 있다.

이 기술문서에서는 후자의 그룹을 고려 하였다. 그리고 Actionscript3.0 으로 전환하기에 혼란을 느끼시는 분들을 위해 글을 써내려 가겠다.

A brief history of ActionScript ( Actionscript 의 역사 )

 Actionscript 는 Flash player4 에서 처음으로 소개 되었다. 그것은 Flash 에서 인터렉티브에 많은 변화를 가져다 주었지만 언어 자체가 정교 하지고 않았으며 그때 까지 써왔던 언어와도 달랐다. 비록 다음 버젼에서는 ECMAScript 구문이 적용되었지만 초기에 ACtionscript는 ECMAScript 와 많이 달랐다.
Actionscript 1.0 은 Flash player 5 에서 소개 되었다. 1.0은 ECMAScript 기반으로 구문과 문법이 적용되었다. Flash player 6과 7로 Player 가 버젼업 하면서 많은 질타를 받았지만 형태는 그대로 유지 되었다.

 Actionscript2.0 은 Flash MX2004 와 Flex 1.0 에서 공개 되었다. 이 새로운 버젼 역시 Flash player6과 7에서 사용되었다. 왜냐하면 Actionscript2.0 은 실제로 Actionscript1.0 runtime 을 기반으로 하고 있기 때문에 결과적으로 Actionscript2.0 은 좋은 퍼포먼스를 낼수 없었다. 왜냐하면 결국 기반은 Actionscript1.0 모델로 구성되어 있기 때문이다.

 Flash Player 9를 준비 하는 동안, 우리는 더이상 낮은 퍼포먼스를 내는 Actionscript1.0, Actionscript2.0 기반의 Actionscript engine 으로 계속 나아 갈수 없다는 것을 확신하게 되었다. 그래서 Adobe 는 Actionscript Virtual Machine(AVM) 을 다시 만들기 시작한다. 그 결과 AVM2 이라고 알려진 높은 퍼포먼스를 낼수 있는 가상 머신을 만들게 되고 새로운 Actionscript 언어를 탑재하게 된다.  비록 AVM2 이 주요한 Actionscript 의 가상머신이 되겠지만 웹상에 존재 하는 무수히 많은 이전 버젼의 컨텐츠들을 위해 Flashplayer 에서 그 컨텐츠들을 지원에 주는 기능을 남겨 두게 된다.

Reasons to use ActionScript 3.0 ( Actionscript3.0 을 사용해야 하는 6가지 이유 )

지금부터 언급하는 내용들은 Actionscript3.0 을 배움으로해서 좋은 점들은 어떠한 규칙없이 나열한 것이다.

1. Your skills will be in high demand

내 생각으로 이것은 현재 Flash developer 로 일하고 있던 일할 계획을 가지고 있던 새로운 언어를 배워야 하는 주된 이유이다. 대부분의 커다란 Flash 일들은 Actionscript3.0 으로 제작되고 있다. 앞으로 Actionscript2.0 기술을 요구하는 일들은 점점 작아 질것이므로 당신이 Flash 로 일을 할 계획을 가지고 있다면 Actionscript3.0 은 필수다.

2. Everything you build will be faster

Flash 개발자들은 새롭게 낸 아이디어나, 정말 기발한 생각으로 만들어진 컨텐츠들이 Flash player 에 한계에 부딛히는걸 보며 좌절을 느껴왔다.
Actionscript3.0 은  이전 언어의(Actionscript2.0) 10배 이상의 퍼포먼스를 제공한다. 이 의미는 Stage 위에 더 많은 객체들을 동시에 조절
할 수 있다는 것을 의미 한다. 만약 당신의 프로젝트를 부드럽게, 보기 좋은 퍼포먼스를 내기를 원한다면 Actionscript3.0 이 그것을 도와줄 것이다.

3. There's an abundance of new APIs

Flash 개발자로서 새로운 장난감( Class package 를 묘사한것 같다. ) 을 자신의 프로젝트에 통합 하는 것 만큼 즐거운 일은 없을것이다. Actionscript3.0 은  XML, 정규식, binary sockets 와 같은 100가지의 새로운 APIs 를 포함하고 있다. 더 대단한 것은 Actionscript 의 모든 부분이 새로운 언어의 특징에 맞게 찾아 쓰기 편하도록 package 별로 namespaces 별로 나눠져 있다는 것이다. 당신은
Actionscript3.0 을 사용할때 Flash toolbox 가 더이상 가득 차 있어서 찾기 불편한것이 아닌, 잘 정리되어 있는것을 볼 수 있을것이다.

4. The display list rocks

Actionscript3.0 에서는 Flash 가 visual object(DisplayObject)를 처리 하는 방법이 달라졌다. ( 이전 버젼과 가장 큰 차이점 ) 이전 버젼의 언어에서는, Flash movie 에서 객체들의  display order(depth) 를 조절하기 위해  black art 를 사용하였다. 이 언어를 배우기 시작하는 사람들은 이해 할수 없는 많은 꼼수와 대안이 존재 한다. 예를 들어 이것은 보통 가장 깊은 곳에 있는 visual object 들을 어떤 무엇보다 가장 높은 곳에 위치시키기 위해 사용된다. 이것은 큰 단위 프로젝트시 많은 문제를 일으키고 depth 를 조절하는 메뉴얼을 필요로 한다. Actionscript3.0 에서 visual object 를 조작하는 새로운 규율은 이러한 객체들을 rendering 하는데 간단한 메카니즘으로 되어 있다. 한번 Actionscript3.0 을 사용하기 시작하면 다시는 3.0 없이는 작업을 못할 것이다.  ( depth를 조절 하는 방법이라든지 규칙(내부적으로)이 변하였다는 것을 말하고 있다. )

5. The object-oriented structure is better

개발자들은 특히 Actionscript3.0 의 object-oriented structure 에 만족하고 있다. 3.0은 runtime typing, class, package, namespace 그리고 정밀하게 이루어져 있는 이벤트 모델을 포함하고 있다. Actionscript3.0 을 프로그래밍 하는 것은 Java 나 C# 과 같은 high-level 언어로 프로그래밍 하는 것과 같은 수준이다. Actionscript3.0 의 새로운 기능들은 당신의 코드를 보다 단단하게, 가독성 있게 그리고 확장 가능하게 만들어 준다. 만약 당신이 interactive designer 라면 이 기능들은 많이 사용하지 않을지도 모른다. 하지만 당신이 프로그램능력의 향상을 원할때 이 언어의 구조는 당신을 지원해 줄것이다.

6. It's more enjoyable to work with ActionScript 3.0

지금 까지 언급한 모든 내용을 읽고도 여전히 Actionscript3.0 을 배울 마음이 안생긴다면 그냥 Actionscript2.0 으로 프로젝트를 진행하기를 바란다. 그러나 Flash platform 이 진화하고 앞으로 나올 새로운 기술들은 모두 Actionscript 3.0이 사용될 것이다. 예를들어 Flex 3 이나 Adobe AIR 는 Actionscript3.0 을 필요로 한다. 그리고 만약 당신이 이러한 기술들을 이용한 작업을 원한다면 Actionscript3.0을 사용하는 것 외에는 선택의 여지가 없을 것이다.

FAQs about ActionScript 3.0

이 섹션에서는 Actionscript3.0 에서 자주 받는 질문에 대해 이야기 해 볼까 한다. 그리고 당신이 새로운 언어로 바꾸는 것에 대한 걱정과 질문거리를 씻어내 주겠다.

* Why does ActionScript 3.0 require more code than ActionScript 2.0? ( 왜 Actionscript3.0 은 2.0 보다 많은 코드를 필요로 하는가? )

많은 경우에서 Actionscript3.0 는 더 많은 코드를 필요로 하지 않는다. 이 질문을 하는 대부분의 사람들은 button click 과 같은 이벤트 리스너를 등록하는 작업을 예를들며 질문을 하곤한다. 하지만 Actionscript 3.0 이 코드를 더 많이 필요로 하는게 확실하다 할지라고 그에 따른 이득을 가져다 준다. 3.0으로 작성된 코드는 보다 코드 전체의 가독성을 높여 주고 코드를 구조화 시켜 준다. ( 결합도가 높다) 만약 당신이 Actionscript2.0 의 이벤트가 동작하는 것을 hack 을 이용하여 본다면 새로운 언어 모델이 더욱 더 센스 있게 만들어져 있다는 것을 알게 될 것이다.

* Why can't I attach code directly to symbols anymore? ( 왜 symbol 에 코드를 삽입할수 없게 되었는가? )

불행하게도 이러한 작업은 대 단위의 프로젝트에서 커다란 혼란을 가져온다. 어디에 있는지 모르는 Actionscript code 는 프로젝트의 대부분의 시간을 소비 하게 한다. 심볼에 보다 잘 알아 볼수 있게
표시를 하더라도 당신이 주요한 코드 위치를 정해 놓고 작업을 하는게 ( document class 와 같이 class 기반 프로젝트를 뜻함 ) 보다 가독성있고 유지 보수하기 좋을 것이다. 이러한 이유로
Flash 를 만든 사람들은 Flash CS3 에서 Actionscript3.0 을 이용하는 프로젝트 작업시 이러한 기능을 막아 놓았다.

* What if I don't want to write everything in class files? ( 나는 모든 코드를 class 파일에 작성하기를 원하지 않는데, 어떻게 해야 하는가? )

Actionscript 3.0 의 오해 중 하나는 모른 code 를 class 파일에 작성해야 된다는 점이다. 이것은 맞는 말이 아니다. 당신은 여전히 Timeline 에 스크립트를 삽입할수 있다. 나 역시도 여전히
Timeline 을 이용한 작업을 하고 있다. 그러나 당신 스스로 보다 객체지향 코드를 작성하고 싶다면 Actionscript3.0 는 객체지향 프로그래밍을 보다 쉽게 도와줄 것이다.

* Why is Adobe focusing all of its attention on developers? ( 왜 Adobe 는 개발자들을 위한 것에 주력하는가 ? )

난 이해할수가 없다. Adobe 는 많은 시간을 디자이너를 위한 기능을 만드는데 쓰고 있다. Actionscript3.0는 개발자가 Flash 를 더욱 발전할 수 있게 하는 핵심적인 요소이다. Actionscript3.0 에 대한 프로젝트가 끝났고 곧있으면 Adobe 는 다시 디자인과 애니메이션 기능에 촛점을 맞출 것이다.  Flash Player 10 beta 의 기능을 보라. 3D  커스텀 필터, 물리역학 등등 모두 interactive designer 가 요청한 것들이다.

Where to go from here

아래 자료들은 Actionscript3.0 을 시작하는데 매우 도움을 줄 것이다.

  • ActionScript 3.0 overview discusses the goals and features of the language, as well as describing ECMAScript for XML (E4X) and Flash Player API features.
  • Emmy Huang of the Flash Player team compiled some tips and common issues you might encounter during development to help ease your transition to ActionScript 3.0.
  • To get more articles and online resources, be sure to check out the ActionScript 3.0 section of the ActionScript Technology Center.
  • I also highly recommend Learning ActionScript 3.0. It is a great book for beginners who are learning the new language. You can review three chapters of the book on the Adobe Developer Connection.
  • For more advanced coders, Colin Moock's book Essential ActionScript 3.0 is largely considered the bible of ActionScript 3.0 development. You can review two chapters of Colin's book on the Adobe Developer Connection as well.
  • If you prefer to learn by watching videos, there are many resources available. Lynda.com is a great place to learn about ActionScript 3.0. In particular, ActionScript 3.0 in Flash CS3 Professional is a great introduction to the language. I also run a free video tutorial site (gotoandlearn.com) that has a large number of tutorials featuring ActionScript 3.0.


원문 링크 번역 : 동강 www.ddongkang.com

Posted by Flash 동강