2008.05.02 Adobe Open Screen Project
2008.01.20 Google Analytics AIR application
2007.11.30 Big SpaceShip 의 플래시 개발자가 공개한 팁.



http://www.adobe.com/openscreenproject/developers/




어도비의 오픈스크린 프로젝트

물론 완전한 오픈소스는 아니지만,

진정한 Deployment를 위한 어도비의 전략의 일환 중 하나.

핵심 포맷에 대한 제한을 풀고, 각 디바이스당 부과되는 라이센스를 전부 무료로 전환했다.

원하면 모바일 디바이스에서 플래시 플랫폼을 무료로 사용할 수 있게 되었다.

점점 매력적으로 변하는 어도비




똘똘한 Kevin Lynch 가 지난 2월 CTO가 되었다.


Adobe, AIR, Flash, flex, open screen project, OpenSource


http://analytics.boulevart.be/




>> 개발자의 인터뷰 및 정보공개영상.
http://onair.adobe.com/blogs/videos/2008/01/15/serge-jespers-talks-to-boulevart-about-google-analytics-air-application/


사용자 삽입 이미지


Google Analytics 를  Air Platform 으로 만든 어플리케이션

다음 베타버전은 디자인도 멋있으니, 다음웹인사이드 버리고 요거 쓸지도..




AIR, Application, Flash, flex, Google Analytics, GUI, RIA

간단하지만, 많이 알지만  자꾸 까먹는.



Tweening Equations & Math Performance


-소수점은 곱하기가 나누기 보다 빠르다.  ( 아마도 /  보단  *  를 쓰라는..)


-부하가 많은 작업에선 내장 Tween 클래스보다  페너함수가 좀 빠르다.



Kill Trace Actions


-보기좋은 코드를 위해서도 있지만, 플레이어부담을 줄인다는..



비트맵과 사운드 파일을 라이브러리에서 각각 최적화하라..


-사운드는 Aif 파일을 이용 Mp3로 익스포트한다. (64Kbps는 피한다)



라이브러리 패널


( 한꺼번에 최적화가 가능하다는데.. 모른겠다 안써봐서)


Fuel’s Library Items panel (download here).





다이나믹텍스트는 무비클립에 집어넣어 cacheAsBitmap을 설정.



Jpg파일을 Break Apart시키지 말아라.



onEnterFrame 안에서의 For문.


// slow

var a = [0,1,2];
mySlow.onEnterFrame = function():Void
{
for(var i=0;i<a.length;i++) { a[i]++; }
};


// fast
var a = [0,1,2];
myFast.onEnterFrame = function():Void
{
a[0]++;
a[1]++;
a[2]++;
}


또는, 다른 예에선..


var error_array = [];
error_array[0] = [404,"File Not Found"];
error_array[1] = [500,"Misconfiguration"];
error_array[2] = [403,"Forbidden"];
error_array[3] = [200,"Okay"];


// assumes an outside event has fired that calls this function
onNewError($error_code:Number):Void
{
  for(var i=0;i<error_array.length;i++)
  {
   if(error_array[i][0] == $error_code)
    {
     trace("Error Found!: " + i);
     break;
    }
   }
};


function doesErrorExist($error_code:Number):Boolean
{
  for(var i=0;i<error_array.length;i++)
  {
   if(error_array[i][0] == $error_code) return true;
   }
   return false;
};


요것보단.. 아래 것이 훨씬 조직적이고 낫다.


var error_obj = {};
error_obj["e_404"] = "File Not Found";
error_obj["e_500"] = "Misconfiguration";
error_obj["e_403"] = "Forbidden";
error_obj["e_200"] = "Okay";


onNewError($error_code:Number):Void
{
  trace("Error Found!: " error_obj["e_" + $error_code.toString()]);
};


function doesErrorExist($code:Number):Boolean
{
  return error_obj["e_" + $error_code.toString()] != null;
}




OnMouseMove 나 OnResize같은 NonFrame기반 이벤트는 될수 있으면 피하라.


-onEnterFrame 안에서 처리하는게 훨씬 빠르다.



블러필터의 값은 2배수로 설정하는걸 플레이어는 더 좋아한다.(다른 필터들도 아마..)



모든 걸 다 죽이고, 없애라.. 특히 as3.0에선 더욱 좋다..


- 각 클래스마다    function kill():Void{};   를 항상 작성하여둔다.


그안에서 무비클립 , onEnterFrame, intervals 등 제거, 모든 변수들 초기화, 등등..


을 해두면 더욱 보기 편하며 조직적이다.




hitTest 대신해서..


Recursive Dimension Clustering


 Shape Based Hit Detection


요것들이 훨씬 좋다.






Mask는 최대한 피해라..


-플레이어는 매 프레임마다 무엇을 렌더링해서 보여주고, 무엇을 숨겨야 될지를 계산해야된다.



alpha Video와 Png


- 원래 필요한 사이즈의 반만한 사이즈의 알파 비디오를 플래시에서 두배로 늘려서 사용해라.

생각보다 퀄리티 차이는 별로 안난다..


-알파비디오를 쓰기 전에 Png 시퀀스로 테스트 해봐라.. 비디오가 좀 성능이 나을 수 있지만

항상그런건 아니니, 테스트해볼만하다.




Frame Rate  는 25  or 30  을 주로 사용한다..

- 그 이상은 안좋다..    그러나 큰 변수는 아니다.




Math 는 될수 있으면 미리 지정해서 배열이나 변수에 넣어놓고, 필요한 곳에서 사용해라..




_visible = false 가  _alpha 보다 낫지만..


_visible =false 로 해놓는다고 해서 그 안의 코드나 모션들이 사라지는 건 아니다..





앞으론 delete onEnterFrame 보단  onEnterFrame  = null  로..




.

.

.

.

################################



대충 이정도만.. 







ActionScript, bigspaceship, Flash, TIP
Skin Download
rss