2007.12.01 Adobe Apollo _ Christian Cantrell Interview
2007.12.01 Flex Component _ 플렉스 컴포넌트
2007.11.30 Big SpaceShip 의 플래시 개발자가 공개한 팁.



http://video.onflex.org/2007/03/11/christian-cantrell-demos-apollo/



Adobe 의 Mike Chambers 가 아폴로 어플리케이션 개발자인 Christian Cantrell 를

인터뷰 하면서 아폴로 로 개발된 것을 보여준다..

flash 와 html 이 저렇게 유연하게 통신할 수 있다는 것...

Open-Api 의 중요성과 데스크탑과 웹의 자연스러운 연결. 완전한 런타임 구현..

그리고, Multiple window 의 지원과 actionscript 과 javascript 의 완벽한 통신으로

플래시에서의 오브젝트를 자바에서 그대로 제어가능하도록 하는 등..  풀어야 할 과제.


조금씩 흥분된다.




ActionScript, Adobe, AIR, apollo, flex, JavaScript, WEB2.0


http://video.onflex.org/2007/03/11/ely-greenfield-shows-his-flexbook-component/#more-11

플렉스로 만든 북 컴포넌트. 

뭐든지 다 얹혀 질 수 있을 거 같다.

이런걸 보면,   코드.가 멋있을 수 있다는 것.

쿨한 코드.


예제사이트>>

http://www.quietlyscheming.com/blog/components/flexbook/

ActionScript, Adobe, Component, flex

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



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