Flash/tip

    비트맵 이미지 사용에 대한 생각

    보통 플래시에서 이미지를 사용할 때 jpg와 png가 사용된다. 알파값이 필요한 이미지라면 png를, 사진 이미지 혹은 알파값이 필요없는 이미지는 jpg를 사용한다. jpg는 png보다 용량이 작기 때문에 용량부분에 있어서 용이하다. 하지만 cpu부분에서도 많은 차이를 보인다. jpg는 알파값이 없기 때문에 화면 렌더링에서 효율적이지만 png는 알파값때문에 화면 렌더링할 때 많은 부하를 보인다. 화면이 움직이지 않으면 상관없으나 화면이 움직여서 새로 렌더링이 된다면 cpu사용량이 늘어난다. 한번 화면이 움직이고 나서 멈춰도 cpu사용량은 움직이기 전만큼의 사용량으로 돌아가지 않는다.

    복잡한 이미지는 비트맵으로.

    복잡한 드로윙(벡터)가 bg로 깔려있고 그 위로 무비클립들이 지나다닐 때.. 화면 렌더링상 벡터로 된 bg는 많은 cpu를 차지하게 된다. bg가 움직이지 않더라도 bg위로 움직이는 많은 무비클립들과 겹쳐지게 됨으로써 화면을 다시 그리게 되기 때문이다.(때문인 듯) 벡터 bg가 단색이나 간단한 그림 혹은 단색이면 큰 차이는 없으나 여러 필터와 가지각색의 색상이 들어가면 cpu 격차는 더욱더 심해진다. 그 bg를 cache as bitmap으로 설정해 주어도 마찬가지이다. bg를 벡터가 아닌 비트맵 이미지로 해놓으면(같은 그림) cpu점유율은 엄청난 차이를 보인다. 테스트 결과 40%의 차이를 보였다. 용량이 허용되는 한 안에서는 꼭 비트맵을 사용하도록 해야겠다.

    모션이 많은 타임라인은 마지막에 빈 프레임으로 끝내기

    타임라인에 모션이 많은 무비클립의 경우, 모션이 일어난 후에 디스플레이 오브젝트들이 화면에 있어야 하는 경우는 어쩔 수 없지만, alpha값 0이 되는 디스플레이 오브젝트들은 빈 프레임으로 두어야 한다. alpha값 0인 채로 alpha값 0인 채로 두면 화면에선 alpha값 0을 표현하는 중이기 때문에 cpu를 잡아먹는다. 세가지 경우로 나누어 테스트 해본 결과...(테스트 환경은, 비트맵 이미지를 무비클립으로 만들어 막무가내로 모션을 준 것이다) 1. 마지막 프레임에 무비클립들을 alpha값 0인채로 두었을 때 : cpu 약50% 2. 마지막 프레임에 무비클립들을 visible = false로 했을 때 : cpu 약38% 3. 마지막 프레임을 빈 프레임으로 하여 아무 무비클립도 두지 않았을 때 : c..

    무비클립을 여러개 만들었을 때 마우스 반응 해지하기

    라이브러리에 있고 linkage가 걸린 무비클립을 대략 몇천개정도 동적으로 생성했을 경우. 이 무비클립에 인터렉션이 없다면 mouseEnabled와 mouseChildren을 false로 해주어야 한다. 즉, 마우스 반응을 없애야 한다. 무비클립의 mouseEnabled와 mouseChildren은 기본값이 true인데 true인채로 놓으면 마우스가 동적 생성한 무비클립 몇천개 위를 지날경우 엄청난 cpu부하를 가져온다. 10x5픽셀인 무비클립을 동적으로 8000개를 만들어 테스트해본 결과 1. false로 지정해주지 않으면 cpu 50% 차지. 2. 8000개의 무비클립에 일일히 false를 해주면 20~25% 차지. 3. 8000개의 무비클립을 감싸고 있는 무비클립에 false를 해주면 5%차지. 마..

    비트맵 캐싱(cacheAsBitmap)

    캐싱 기능이 필요한 경우 무비 클립에 캐싱을 활성화하면 표면이 만들어지며, 복잡한 벡터 애니메이션을 빠르게 렌더링할 수 있는 등 여러 이점이 발생합니다. 몇몇 상황에서는 캐싱을 활성화하는 것이 좋습니다. 항상 캐싱을 활성화한 상태로 유지하면 SWF 파일의 성능이 향상되는 것처럼 보이지만, 사실 캐싱을 활성화하면 성능이 오히려 저하되는 경우도 있습니다. 이 단원에서는 캐싱을 사용해야 할 경우와 일반 무비 클립을 사용해야 할 경우에 대해 설명합니다. 캐시된 데이터의 전체적인 성능은 인스턴스 벡터 데이터의 복잡도, 변경하려는 데이터의 양, opaqueBackground 속성의 설정 여부 등에 달려 있습니다. 작은 영역을 변경할 경우 표면과 벡터 데이터 중 어느 것을 사용해도 결과는 비슷합니다. 응용 프로그램을..