devmae
개발자 향기
devmae
전체 방문자
오늘
어제
  • 전부 감상 (280)
    • Unity (52)
      • memo (37)
      • R&D (15)
    • 모바일 (32)
      • iOS (6)
      • Android (25)
    • 개발자 모드 (41)
      • 개발자처럼 파고들기 (28)
      • 한가해서 책읽는거 아님 (10)
      • 영상 요약 (3)
    • Languages (40)
      • C++ (23)
      • MFC (8)
      • Java (4)
      • javascript (5)
    • Flash (108)
      • tip (29)
      • tech (4)
      • as2.0 (1)
      • as3isolib (3)
      • flartoolkit (2)
      • 이미지 편집기 (2)
      • papervision3d (12)
      • scale form (2)
      • Flash Builder (12)
      • air (5)
      • as3.0 (20)
      • flash player (9)
      • 개념잡기 (6)
      • source (1)
    • +,-,×,÷ (3)
      • 수학 뽀개기 (3)

블로그 메뉴

  • 홈
  • 방명록

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
devmae

개발자 향기

Flash/tip

비트맵 캐싱(cacheAsBitmap)

2009. 6. 18. 13:52

캐싱 기능이 필요한 경우

무비 클립에 캐싱을 활성화하면 표면이 만들어지며, 복잡한 벡터 애니메이션을 빠르게 렌더링할 수 있는 등 여러 이점이 발생합니다. 몇몇 상황에서는 캐싱을 활성화하는 것이 좋습니다. 항상 캐싱을 활성화한 상태로 유지하면 SWF 파일의 성능이 향상되는 것처럼 보이지만, 사실 캐싱을 활성화하면 성능이 오히려 저하되는 경우도 있습니다. 이 단원에서는 캐싱을 사용해야 할 경우와 일반 무비 클립을 사용해야 할 경우에 대해 설명합니다.

캐시된 데이터의 전체적인 성능은 인스턴스 벡터 데이터의 복잡도, 변경하려는 데이터의 양, opaqueBackground 속성의 설정 여부 등에 달려 있습니다. 작은 영역을 변경할 경우 표면과 벡터 데이터 중 어느 것을 사용해도 결과는 비슷합니다. 응용 프로그램을 배포하기 전에 두 가지 경우를 모두 테스트하는 것도 좋습니다.

알파 채널 마스킹을 사용하려면 cacheAsBitmap 속성을 true로 설정해야 하며, 자세한 내용은 알파 채널 마스킹을(를) 참조하십시오.

비트맵 캐싱 기능이 필요한 경우

다음과 같은 경우에는 일반적으로 비트맵 캐싱을 사용할 경우 큰 이점을 얻을 수 있습니다.

복잡한 배경 이미지 섬세하고 복잡한 벡터 데이터 배경 이미지가 포함된 응용 프로그램을 사용할 경우입니다. 이것은 아마 비트맵 추적 명령을 적용한 이미지 또는 Adobe Illustrator에서 작성한 아트웍이 될 수 있을 것입니다. 배경에 있는 문자들에 애니메이션 효과를 적용할 수도 있으며, 그 결과 배경에서 벡터 데이터를 지속적으로 다시 생성해야 하므로 해당 애니메이션의 속도는 느려집니다. 성능을 향상시키려면 해당 내용을 선택하여 무비 클립에 저장한 다음 opaqueBackground 속성을 true로 설정합니다. 배경이 비트맵으로 렌더링되고 빠르게 다시 그려지므로 애니메이션은 훨씬 더 빠르게 재생됩니다.

스크롤 텍스트 필드 스크롤 텍스트 필드에 대량의 텍스트를 표시하는 응용 프로그램을 사용할 경우입니다. 스크롤 경계선으로 스크롤이 가능하도록 설정(즉, scrollRect 속성을 설정함)한 무비 클립 안에 텍스트 필드를 배치할 수 있습니다. 이렇게 하면 지정된 인스턴스에 대해 빠른 픽셀 스크롤을 수행할 수 있습니다. 사용자가 무비 클립 인스턴스를 스크롤하면 스크롤된 픽셀은 위쪽으로 이동하며 전체 텍스트 필드가 다시 생성되는 대신 새롭게 표시되는 영역만 생성됩니다.

윈도우 시스템  윈도우가 겹쳐지는 복잡한 구조가 포함된 응용 프로그램을 사용할 경우입니다. 각 윈도우는, 예를 들면 웹 브라우저 윈도우처럼 열려져 있거나 닫혀져 있을 수도 있습니다. cacheAsBitmap 속성을 true로 설정하여 각 윈도우를 표면으로 표시하면 각 윈도우는 서로 분리되고 캐시됩니다. 사용자는 윈도우를 드래그하여 서로 겹쳐지게 할 수 있으며, 각 윈도우에서는 벡터 내용을 다시 생성할 필요가 없습니다.

이와 같은 모든 경우에, 벡터 그래픽이 최적화되므로 응용 프로그램의 응답성 및 상호 작용성은 향상됩니다.

비트맵 캐싱이 인스턴스에 적용되는 방식을 보여 주는 샘플 소스 파일을 볼 수 있습니다. 로컬 시스템상의 Samples 폴더에서 cacheBitmap.fla 파일을 참조하십시오.

  • (Windows) boot_drive\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\CacheBitmap
  • (Macintosh) Macintosh_HD/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/CacheBitmap

또한 비트맵 캐싱을 스크롤 텍스트에 적용하는 방법을 보여 주는 샘플 소스 파일을 볼 수 있습니다. 로컬 시스템상의 Samples 폴더에서 샘플 소스 파일인 flashtype.fla를 참조하십시오.

  • (Windows) boot_drive\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\FlashType
  • (Macintosh) Macintosh_HD/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/FlashType

비트맵 캐싱의 사용을 피해야 할 경우

이 기능을 잘못 사용하면 SWF 파일에 부정적인 영향을 미칩니다. 표면을 사용하는 FLA 파일을 작성할 경우 다음 지침을 준수해야 합니다.

  • 표면(캐싱이 활성화된 무비 클립)을 과도하게 사용하지 않습니다. 각 표면은 일반 무비 클립보다 메모리를 더 차지하므로 렌더링 성능을 향상시킬 경우에만 표면을 활성화하는 것이 좋습니다.

    캐시된 비트맵은 일반 무비 클립 인스턴스보다 훨씬 더 많은 메모리를 소비할 수도 있습니다. 예를 들어, 스테이지에서 크기가 250픽셀*250픽셀인 무비 클립이 캐시될 경우 250KB가 소비되는 반면에, 동일한 크기의 일반(캐시되지 않은) 무비 클립 인스턴스는 1KB를 소비합니다.

  • 캐시된 표면에 확대/축소를 적용하지 않습니다. 비트맵 캐싱을 남용하면 특히 내용을 확대 및 축소할 경우 상당한 양의 메모리가 소비됩니다(앞의 항목 참조).
  • 표면은 대부분 정적인, 즉 움직임이 거의 없는 무비 클립 인스턴스에 대해 사용합니다. 이 경우에 인스턴스를 드래그하거나 이동할 수 있지만 인스턴스의 내용은 움직이거나 크게 변경되어서는 안 됩니다. 예를 들어 인스턴스를 회전하거나 변형하면 해당 인스턴스는 표면 및 벡터 데이터간에서 전환되는데, 이는 처리하기 어려운 작업이며 SWF 파일에 부정적인 영향을 미치기도 합니다.
  • 표면을 벡터 데이터와 혼합하면 Flash Player 또는 컴퓨터에서 수행해야 하는 처리 작업이 증가됩니다. 가능하면 표면을 서로 그룹화하는 것이 좋으며, 예를 들면 윈도우 응용 프로그램을 작성할 경우가 그렇습니다.

    [출처] 비트맵 캐싱 기능이 필요한 경우 |작성자 백이몽

    'Flash/tip' 카테고리의 다른 글
    • 비트맵 이미지 사용에 대한 생각
    • 복잡한 이미지는 비트맵으로.
    • 모션이 많은 타임라인은 마지막에 빈 프레임으로 끝내기
    • 무비클립을 여러개 만들었을 때 마우스 반응 해지하기
    devmae
    devmae
    enjoy with me?

    티스토리툴바