사용 안내서 취소

모범 사례 - 모바일 장치 내용 만들기 팁

  1. Adobe Animate 사용 안내서
  2. Animate 소개
    1. Animate의 새로운 기능
    2. 시각적 용어집
    3. Animate 시스템 요구 사항
    4. Animate 키보드 단축키
    5. Animate에서 여러 파일 유형을 사용한 작업
  3. 애니메이션
    1. Animate의 애니메이션 기본 사항
    2. Animate에서 프레임 및 키프레임을 사용하는 방법
    3. Animate의 프레임별 애니메이션
    4. Animate에서 클래식 트윈 애니메이션을 사용하여 작업하는 방법
    5. 브러시 도구
    6. 모션 안내선
    7. 모션 트윈 및 ActionScript 3.0
    8. 모션 트윈 애니메이션 정보
    9. 모션 트윈 애니메이션
    10. 모션 트윈 애니메이션 만들기
    11. 속성 키프레임 사용
    12. 트윈으로 위치에 애니메이션 적용
    13. 모션 편집기를 사용하여 모션 트윈을 편집하는 방법
    14. 트윈 애니메이션의 모션 경로 편집
    15. 모션 트윈 조작
    16. 사용자 정의 속도 추가
    17. 모션 사전 설정 만들기 및 적용
    18. 애니메이션 트윈 범위 설정
    19. XML 파일로 저장한 모션 트윈을 사용한 작업
    20. 모션 트윈과 클래식 트윈의 비교
    21. 모양 트위닝
    22. Animate에서 뼈 도구 애니메이션 사용하기
    23. Animate에서 캐릭터 리깅으로 작업하기
    24. Adobe Animate에서 마스크 레이어를 사용하는 방법
    25. Animate에서 장면으로 작업하는 방법
  4. 대화형 기능
    1. Animate로 버튼을 만드는 방법
    2. Animate 프로젝트를 다른 문서 유형 포맷으로 변환
    3. Animate에서 HTML5 Canvas 문서를 만들고 게시하기
    4. Animate에서 코드 조각을 사용하여 대화형 기능 추가하기
    5. 사용자 정의 HTML5 구성 요소 만들기
    6. HTML5 Canvas의 구성 요소 사용
    7. 사용자 정의 구성 요소 만들기: 예제
    8. 사용자 정의 구성 요소의 코드 조각
    9. 모범 사례 - Animate를 사용한 광고
    10. 가상 현실 제작 및 게시
  5. 작업 영역 및 작업 과정
    1. 칠 브러시 만들기 및 관리
    2. HTML5 Canvas 문서에서 Google Fonts 사용
    3. Creative Cloud 라이브러리와 Adobe Animate 사용
    4. Animate의 스테이지 및 도구 패널 사용
    5. Animate 작업 과정 및 작업 영역
    6. HTML5 Canvas 문서에서 웹 글꼴 사용
    7. 타임라인과 ActionScript
    8. 여러 타임라인을 사용한 작업
    9. 환경 설정
    10. Animate 제작 패널 사용
    11. Animate로 타임라인 레이어 만들기
    12. 모바일 앱 및 게임 엔진용으로 애니메이션 내보내기
    13. 객체 이동 및 복사
    14. 템플릿
    15. Animate의 찾기 및 바꾸기
    16. 실행 취소, 다시 실행 및 작업 내역 패널
    17. 키보드 단축키
    18. Animate에서 타임라인을 사용하는 방법
    19. HTML 확장 만들기
    20. 이미지 및 애니메이션 GIF에 대한 최적화 옵션
    21. 이미지 및 GIF에 대한 내보내기 설정
    22. Animate의 에셋 패널
  6. 멀티미디어 및 비디오
    1. Animate의 그래픽 객체 변형 및 결합
    2. Animate에서 심볼 인스턴스를 만들고 작업하기
    3. 이미지 추적
    4. Adobe Animate에서 사운드를 사용하는 방법
    5. SVG 파일 내보내기
    6. Animate에서 사용할 비디오 파일 만들기
    7. Animate에서 비디오를 추가하는 방법
    8. Animate로 객체 그리고 만들기
    9. 선 및 모양 변형
    10. Animate CC의 획, 채우기 및 그래디언트
    11. Adobe Premiere Pro 및 After Effects 작업
    12. Animate CC의 색상 패널
    13. Animate에서 Flash CS6 파일 열기
    14. Animate의 클래식 텍스트 작업
    15. Animate에 아트워크 가져오기
    16. Animate의 가져온 비트맵
    17. 3D 그래픽
    18. Animate의 심볼 작업
    19. Adobe Animate로 선 및 모양 그리기
    20. Animate의 라이브러리 작업
    21. 사운드 내보내기
    22. Animate CC의 객체 선택
    23. Animate의 Illustrator AI 파일 작업
    24. 블렌드 모드 적용
    25. 객체 배열
    26. 명령 메뉴를 사용한 작업 자동화
    27. 다국어 텍스트
    28. Animate에서 카메라 사용하기
    29. 그래픽 필터
    30. 사운드 및 ActionScript
    31. 드로잉 환경 설정
    32. 펜 도구로 그리기
  7. 플랫폼
    1. Animate 프로젝트를 다른 문서 유형 포맷으로 변환
    2. 사용자 정의 플랫폼 지원
    3. Animate에서 HTML5 Canvas 문서 만들고 게시하기
    4. WebGL 문서 만들고 게시하기
    5. iOS용 AIR에 맞추어 애플리케이션을 패키징하는 방법
    6. Android용 AIR 애플리케이션 게시
    7. 데스크톱용 Adobe AIR에 맞춘 게시
    8. ActionScript 게시 설정
    9. 모범 사례 - 애플리케이션에서 ActionScript 구성
    10. Animate에서 ActionScript를 사용하는 방법
    11. Animate 작업 영역의 액세스 가능성
    12. 스크립트 작성 및 관리
    13. 사용자 정의 플랫폼에 대한 지원 활성화
    14. 사용자 정의 플랫폼 지원 개요
    15. 사용자 정의 플랫폼 지원 플러그인 작업
    16. ActionScript 3.0 디버깅
    17. 사용자 정의 플랫폼에 대한 지원 활성화
  8. 내보내기 및 게시
    1. Animate CC에서 파일을 내보내는 방법
    2. OAM 게시
    3. SVG 파일 내보내기
    4. Animate를 사용하여 그래픽 및 비디오 내보내기
    5. AS3 문서 게시
    6. 모바일 앱 및 게임 엔진용으로 애니메이션 내보내기
    7. 사운드 내보내기
    8. 모범 사례 - 모바일 장치 콘텐츠 만들기 팁
    9. 모범 사례 - 비디오 규칙
    10. 모범 사례 - SWF 애플리케이션 제작 지침
    11. 모범 사례 - FLA 파일 구조화
    12. Animate용 FLA 파일을 최적화하는 모범 사례
    13. ActionScript 게시 설정
    14. Animate용 게시 설정 지정
    15. 프로젝터 파일 내보내기
    16. 이미지 및 애니메이션 GIF 내보내기
    17. HTML 게시 템플릿
    18. Adobe Premiere Pro 및 After Effects 작업
    19. 애니메이션의 빠른 공유 및 게시
  9. 문제 해결
    1. 해결된 문제
    2. 알려진 문제

 

모바일 장치에서 사용할 Animate 내용 만들기

모바일 장치용 Animate 내용을 만들려면 몇 가지 기본 원칙을 따라야 합니다. 예를 들어, Animate 개발자는 매우 복잡한 아트워크와 과도한 트위닝이나 투명도를 사용하지 않는 경우가 많습니다.

모바일 장치마다 성능이 크게 다르기 때문에 Flash Lite 개발자는 또 다른 과제에 직면해 있습니다. 다양한 장치에 내용을 게시해야 하는 경우 개발자가 가장 낮은 수준의 공통 요소에 맞게 제작해야 하는 경우가 생깁니다.

모바일 내용을 최적화하려면 장단점을 고려해야 합니다. 예를 들어, 한 방법을 사용하면 내용을 더욱 보기 좋게 표현할 수 있지만 다른 방법을 사용하면 성능이 더 향상됩니다. 이러한 장단점을 평가할 때는 에뮬레이터와 대상 장치를 왔다갔다하면서 반복해서 테스트를 수행하게 됩니다. 색상의 정확도, 텍스트 가독성, 실제 상호 작용, UI 응답성 및 실제 모바일 환경의 다른 측면을 평가하려면 실제 장치에서 내용을 확인해야 합니다.

 Flash Lite에 대한 내용은 Flash CC 이상 버전에는 적용할 수 없습니다.

모바일 장치의 애니메이션에 대한 Flash Lite 지침

모바일 장치의 애니메이션 내용을 만드는 경우 장치의 CPU 제한을 고려해야 합니다. 아래의 지침을 따르면 Flash Lite 내용이 느리게 실행되는 문제를 방지할 수 있습니다.

  • Flash Lite 파일을 새로 만들 때는 문서가 제대로 설정되어 있는지 확인합니다. Animate 파일의 크기는 문제 없이 조정되지만 기본 스테이지 크기에서 실행되지 않는 파일의 크기를 플레이어에서 조정해야 하는 경우 성능이 저하될 수 있습니다. 대상 장치의 해상도와 일치하도록 문서 스테이지 크기를 설정해 보십시오. 또한 Flash Player를 Flash Lite의 올바른 버전으로 설정하십시오.

  • Flash Lite에서는 벡터 그래픽을 저품질, 중간 품질 및 고품질로 렌더링할 수 있습니다. 렌더링 품질이 높을수록 Flash Lite에서 벡터 그래픽을 더 매끄럽고 정확하게 렌더링하며 장치의 CPU 요구량이 커집니다. 복잡한 애니메이션을 제공하려면 플레이어의 품질 설정을 변경하면서 실험하고 SWF 파일을 철저하게 테스트합니다. SWF 파일의 렌더링 품질을 제어하려면 _quality 속성이나 SetQuality 명령을 사용하십시오. _quality 속성에 유효한 값은 LOW, MEDIUMHIGH입니다.

  • 동시 트윈 수를 제한합니다. 한 애니메이션이 끝나면 다른 애니메이션이 시작되도록 애니메이션 시퀀스를 설정하거나 트윈 수를 줄입니다.

  • 기호에 투명(알파) 효과를 사용하면 CPU 사용량이 크게 늘어나므로 꼭 필요한 경우에만 사용합니다. 특히 알파 수준이 완전히 불투명하지 않은(100% 미만) 기호를 트위닝하지 마십시오.

  • 큰 마스크, 많은 동작, 알파 블렌딩, 과도한 그래디언트 및 복잡한 벡터와 같이 CPU를 많이 사용하는 시각 효과를 사용하지 않습니다.

  • 가장 효율적인 결과를 얻기 위해 트윈, 키프레임 애니메이션 및 ActionScript로 구동되는 움직임을 결합하여 실험합니다.

  • 벡터 타원 및 원의 렌더링은 사각형의 렌더링보다 메모리를 훨씬 많이 사용합니다. 원형 및 타원형 획을 사용하는 경우에도 CPU 사용량이 크게 늘어납니다.

  • 실제 대상 장치에서 애니메이션을 자주 테스트합니다.

  • Animate에서 애니메이션 영역을 그릴 때 영역 주위에 정의되는 사각형 테두리 상자를 가능한 한 작게 만들어서 그리기를 최적화합니다. Animate에서는 병합된 영역을 단일 사각형으로 해석하여 총 영역이 더 커지기 때문에 트윈을 겹치지 않아야 합니다. Animate의 다시 그리기 영역 표시 기능을 사용하여 애니메이션을 최적화하십시오.

  • 화면에서 동영상 클립을 숨기기 위해 _alpha = 0_visible = false를 사용하지 않습니다. 동영상 클립의 표시를 해제하거나 알파를 0으로 변경하면 동영상 클립이 선 렌더링 계산에 여전히 포함되므로 성능에 영향을 미칠 수 있습니다.

  • 마찬가지로 다른 아트워크 뒤에 동영상 클립을 흐리게 하여 숨기려고 하지 마십시오. 이렇게 하면 동영상 클립이 플레이어의 계산에 여전히 포함됩니다. 대신 동영상 클립을 스테이지 밖으로 완전히 이동하거나 removeMovieClip을 호출하여 제거하십시오.

모바일 장치의 Flash Lite 비트맵 및 벡터 그래픽

Flash Lite에서는 벡터 그래픽과 비트맵 그래픽을 모두 렌더링할 수 있습니다. 각 그래픽 유형에는 장점과 단점이 있습니다. 비트맵 그래픽 대신 벡터 그래픽을 사용하는 결정은 항상 명확하게 내릴 수 있지는 않으며 몇 가지 요소에 따라 달라집니다.

벡터 그래픽은 SWF 파일에서 수식으로 간결하게 표현되며 Flash Lite 플레이어에서 런타임에 렌더링됩니다. 이와 반대로 비트맵 그래픽은 그림 요소(픽셀)의 배열로 표현되며 데이터가 더 많이 필요합니다. 따라서 파일에서 벡터 그래픽을 사용하면 파일 크기와 메모리 사용을 줄일 수 있습니다.

벡터 그래픽의 경우 크기가 조정될 때 부드러운 모양이 유지되기도 하지만, 비트맵 이미지의 경우에는 크기가 조정될 때 모나게(픽셀화되어) 나타날 수 있습니다.

벡터 그래픽은 비트맵에 비해 렌더링에 처리 능력이 더 필요합니다. 이는 복잡한 모양과 칠이 많은 벡터 그래픽의 경우 더욱 그렇습니다. 따라서 벡터 모양을 많이 사용하면 전체적인 파일 성능이 저하될 수도 있습니다. 비트맵 그래픽은 벡터 그래픽만큼 렌더링에 많은 처리 시간이 필요하지 않기 때문에 휴대 전화에서 애니메이션으로 나타내거나 스크롤해야 하는 복잡한 지도와 같은 일부 파일에 선택하면 좋습니다.

다음 고려 사항을 유념해야 합니다.

  • 벡터 모양에 윤곽선을 사용하지 않습니다. 윤곽선에는 안쪽 가장자리와 바깥쪽 가장자리가 있으므로(칠에는 가장자리가 하나만 있음) 렌더링 작업이 두 배가 됩니다.

  • 모서리가 곡선보다 렌더링하기에 간단합니다. 가능한 경우 특히 아주 작은 벡터 모양에 편평한 가장자리를 사용합니다.

  • 최적화는 아이콘과 같은 작은 벡터 모양에 특히 유용합니다. 복잡한 아이콘의 경우 렌더링 시 세부 사항이 손실될 수 있으며 이렇게 되면 세부 사항의 렌더링 작업이 소용없는 일이 됩니다.

  • 일반적으로 아이콘과 같은 작고 복잡한 이미지에는 비트맵을 사용하고 더 크고 간단한 이미지에는 벡터 그래픽을 사용합니다.

  • 정확한 크기의 비트맵 그래픽을 가져옵니다. 큰 그래픽을 가져와 Animate에서 크기를 작게 조절하지 마십시오. 이렇게 하면 파일 크기와 런타임 메모리를 낭비하는 것입니다.

  • Flash Lite 플레이어에서는 비트맵 매끄럽게 하기를 지원하지 않습니다. 비트맵의 크기를 조절하거나 비트맵을 회전하면 모양이 짤막해집니다. 그래픽의 크기를 조절하거나 그래픽을 회전해야 하는 경우에는 벡터 그래픽을 대신 사용하는 것을 고려하십시오.

  • 텍스트는 본질적으로 매우 복잡한 벡터 모양입니다. 물론 텍스트가 중요한 경우가 많기 때문에 텍스트를 완전히 사용하지 않는 것은 거의 불가능합니다. 텍스트가 필요한 경우 텍스트에 애니메이션을 적용하거나 애니메이션 위에 텍스트를 배치하면 안 됩니다. 텍스트를 비트맵으로 사용하는 것을 고려하십시오. 여러 줄 동적 텍스트 및 입력 텍스트의 경우 텍스트 문자열의 줄바꿈이 캐시되지 않습니다. Animate에서는 런타임에 줄을 바꾸고 텍스트 필드를 다시 그려야 할 때마다 줄바꿈을 다시 계산합니다. 정적 텍스트 필드의 경우 줄바꿈이 컴파일 시에 미리 계산되기 때문에 문제가 발생하지 않습니다. 동적 내용에는 동적 텍스트 필드를 사용하는 것이 불가피하지만 가능하다면 정적 텍스트 필드를 대신 사용하십시오.

  • PNG 파일에서 투명도 사용을 최소화합니다. Animate에서는 비트맵의 투명한 부분에 대해서도 다시 그리기를 계산해야 합니다. 예를 들어, 전경 요소를 나타내는 투명한 PNG 파일을 사용하여 투명한 PNG를 화면 전체 크기로 내보내면 안 되며 대신 전경 요소의 실제 크기를 내보내야 합니다.

  • 비트맵 레이어는 비트맵 레이어끼리, 벡터 레이어는 벡터 레이어끼리 따로 그룹화합니다. Animate에서는 비트맵 및 벡터 내용에 서로 다른 렌더러를 구현해야 하며 각각의 렌더러로 전환하는 데는 시간이 걸립니다.

모바일 장치에 대한 Flash Lite 비트맵의 압축 설정

비트맵을 사용할 때 SWF 파일 크기를 줄이는 이미지 압축 옵션을 이미지별로 설정하거나 모든 비트맵 이미지에 전체적으로 설정할 수 있습니다.

개별 비트맵 파일에 압축 옵션 설정

  1. Animate를 시작하고 문서를 만듭니다.

  2. [라이브러리] 창에서 비트맵을 선택합니다.
  3. [라이브러리] 창에서 비트맵 아이콘을 마우스 오른쪽 버튼으로 클릭하거나(Windows) Control 키를 누른 채 클릭하고(Macintosh) 상황에 맞는 메뉴에서 [속성]을 선택하여 [비트맵 속성] 대화 상자를 엽니다.
  4. [압축] 팝업 메뉴에서 다음 옵션 중 하나를 선택합니다.
    • 그래디언트 칠이 있는 사진이나 이미지 등의 복잡한 색상 또는 색조 변형이 있는 이미지에는 [사진(JPEG)] 옵션을 선택합니다. 이 옵션을 선택하면 JPEG 파일이 생성됩니다. 가져온 이미지에 지정된 기본 압축 품질을 사용하려면 [가져온 JPEG 데이터 사용] 확인란을 선택합니다. 새로운 품질의 압축 설정을 지정하려면 [가져온 JPEG 데이터 사용]의 선택을 취소하고 [품질] 텍스트 상자에 1에서 100 사이의 값을 입력합니다. 설정 값이 클수록 생성되는 이미지의 품질이 향상되지만 파일 크기도 커지므로 적절하게 값을 조정해야 합니다.

    • 모양이 간단하고 색상 수가 적은 이미지에는 [손실 없음(PNG/GIF)] 옵션을 선택합니다. 이 옵션을 선택하면 데이터를 버리지 않는 손실 없는 압축을 사용하여 이미지가 압축됩니다.

  5. [테스트]를 눌러 파일 압축의 결과를 확인합니다.

    원래 파일 크기를 압축된 파일 크기와 비교하여 선택한 압축 설정이 적절한지 확인합니다.

모든 비트맵 이미지에 압축 설정

  1. [파일] > [게시 설정]을 선택한 다음 [Flash] 탭을 클릭하여 압축 옵션을 표시합니다.
  2. JPEG 품질 슬라이더를 조정하거나 값을 입력합니다. JPEG 품질 값이 클수록 생성되는 이미지의 품질이 향상되지만 SWF 파일의 크기가 커집니다. 이미지 품질이 낮을수록 생성되는 SWF 파일의 크기가 작아집니다. 크기와 품질 사이에서 최상의 균형점을 찾으려면 여러 가지 설정을 시도해 보십시오.

모바일 장치의 Flash Lite 프레임 최적화

  • Flash Lite를 지원하는 대부분의 장치에서는 15-20fps(초당 프레임) 정도로 내용을 재생합니다. 프레임 속도는 6fps까지 낮아질 수 있습니다. 개발하는 동안에는 문서 프레임 속도를 대상 장치의 재생 속도에 가깝게 설정합니다. 이렇게 하면 성능이 제한된 장치에서 내용이 어떻게 실행되는지를 알 수 있습니다. 최종 SWF 파일을 게시하기 전에 장치에서 더 높은 프레임 속도를 지원하는 경우 성능을 제한하지 않도록 하기 위해 문서 프레임 속도를 적어도 20fps 이상으로 설정합니다.

  • gotoAndPlay를 사용하는 경우 요청된 프레임을 재생하기 전에 현재 프레임과 요청된 프레임 간의 모든 프레임이 초기화되어야 합니다. 이러한 프레임 중 상당수에 서로 다른 내용이 포함되어 있으면 타임라인을 사용하는 것보다 여러 가지 동영상 클립을 사용하는 것이 더 효율적일 수 있습니다.

  • 파일 시작 부분에 모든 내용을 배치하여 미리 로드하는 것은 데스크톱에서는 의미가 있지만 모바일 장치에서 미리 로드하면 파일 시작이 지연될 수 있습니다. 동영상 클립이 사용될 때 초기화되도록 파일 전반에 내용을 고루 배치하십시오.

모바일 장치에서 Flash Lite 내용의 ActionScript 최적화

대부분의 모바일 장치에서 처리 속도와 메모리가 제한되어 있으므로 모바일 장치에서 사용되는 Flash Lite 내용의 ActionScript를 개발하는 경우 아래의 지침을 따르십시오.

  • 파일과 코드를 가능한 한 간단하게 유지합니다. 사용하지 않는 동영상 클립을 제거하고 불필요한 프레임 및 코드 루프를 삭제하며 너무 많은 프레임이나 관계없는 프레임을 사용하지 않습니다.

  • FOR 루프를 사용하면 조건이 반복마다 확인되면서 발생하는 오버헤드 때문에 더 많은 컴퓨터 운영력을 필요로 할 수 있습니다. 반복으로 인한 손실과 루프 오버헤드가 비슷하면 루프를 사용하는 대신 여러 작업을 개별적으로 실행하십시오. 코드가 더 길어질 수 있지만 성능이 향상됩니다.

  • 프레임 기반 루프가 더 이상 필요하지 않으면 즉시 중지합니다.

  • CPU를 많이 사용할 수 있는 문자열 및 배열을 가능한 한 처리하지 않습니다.

  • 다른 메서드 호출보다 오버헤드가 큰 ActionScript getter 및 setter 메서드를 사용하는 대신 항상 속성에 직접 액세스합니다.

  • 이벤트를 현명하게 관리합니다. 이벤트 수신기를 호출하기 전에 이벤트 수신기가 있는지(null이 아닌지) 여부를 확인하는 조건을 사용하여 이벤트 수신기 배열을 간결하게 유지합니다. clearInterval을 호출하여 활성 간격을 지우고 removeListener를 호출하여 활성 수신기를 제거한 다음 unloadapplication 또는 removeapplicationClip을 사용하여 내용을 제거하십시오. 동영상 클립이 언로드될 때 SWF 데이터를 참고하고 있는 ActionScript 함수가 있으면 Animate에서는 간격 및 수신기 등에서 SWF 데이터 메모리를 다시 수집하지 않습니다.

  • 변수가 더 이상 필요하지 않으면 변수를 삭제하거나, 변수를 null로 설정하여 가비지 수집 대상으로 표시합니다. 변수를 삭제하면 SWF 파일에서 불필요한 에셋이 제거되므로 런타임 중에 메모리 사용을 최적화할 수 있습니다. 그러므로 변수를 null로 설정하는 것보다 삭제하는 것이 더 좋습니다.

  • 가비지 수집 전에 removeListener를 호출하여 오브젝트에서 수신기를 명시적으로 제거합니다.

  • 함수가 동적으로 호출되고 고정된 매개 변수 집합을 전달하는 경우에는 callapply 대신 사용합니다.

  • 네임스페이스(경로 등)를 더 간결하게 만들어서 시작 시간을 줄입니다. 경로의 모든 수준이 IF 문으로 컴파일되고 새로운 Object 호출을 발생시키므로 경로의 수준이 적으면 시간이 절약됩니다. 예를 들어, 경로의 수준이 com.xxx.yyy.aaa.bbb.ccc.funtionName인 경우 com.xxx.yyy.aaa.bbb.ccc에 대해 오브젝트가 인스턴스화되도록 합니다. 일부 Flash 개발자는 SWF 코드를 컴파일하기 전에 전처리기 소프트웨어를 사용하여 58923409876.functionName과 같은 고유 식별자로 경로를 줄입니다.

  • 파일이 동일한 ActionScript 클래스를 사용하는 여러 SWF 파일로 구성되어 있으면 컴파일 중에 선택된 SWF 파일에서 해당 클래스를 제외합니다. 이렇게 하면 파일 다운로드 시간과 런타임 메모리 요구 사항을 줄일 수 있습니다.

  • Object.watchObject.unwatch를 사용하지 않아야 합니다. 오브젝트 속성을 변경할 때마다 플레이어에서 변경 알림을 보내야 하는지를 확인해야 하기 때문입니다.

  • 타임라인의 키프레임에서 실행되는 ActionScript 코드가 완료되는 데 1초가 넘게 걸리면 코드를 분할하여 여러 키프레임에서 실행하는 것을 고려합니다.

  • SWF 파일을 게시할 때 코드에서 trace 문을 제거합니다. 이렇게 하려면 [설정 게시] 대화 상자의 [Flash] 탭에서 [추적 작업 생략] 확인란을 선택하십시오.

  • 상속을 사용하면 메서드 호출 횟수가 늘어나고 메모리를 더 사용합니다. 필요한 모든 기능이 포함된 클래스가 슈퍼클래스에서 일부 기능을 상속하는 클래스보다 런타임에 효율적입니다. 따라서 클래스 확장성과 코드 효율성 사이에서 설계 균형점을 찾아야 할 수 있습니다.

  • 한 SWF 파일에서 사용자 정의 ActionScript 클래스(예: foo.bar.CustomClass)가 포함된 다른 SWF 파일을 로드한 다음 언로드하는 경우 클래스 정의가 메모리에 남아 있습니다. 메모리를 절약하려면 언로드된 SWF 파일에서 사용자 정의 클래스를 모두 명시적으로 삭제합니다. delete 문을 사용하고 정규화된 클래스 이름(예: delete foo.bar.CustomClass)을 지정하십시오.

  • 전역 변수를 정의한 동영상 클립이 제거되는 경우 전역 변수가 가비지 수집 대상으로 표시되지 않으므로 전역 변수를 제한적으로 사용합니다.

  • Flash의 [구성 요소] 패널에서 사용할 수 있는 표준 사용자 인터페이스 구성 요소를 사용하지 않습니다. 이러한 구성 요소는 데스크톱 컴퓨터에서 실행되도록 설계되었으며 모바일 장치에서 실행되도록 최적화되지 않았습니다.

  • 많이 중첩된 함수를 가능한 한 사용하지 않습니다.

  • 존재하지 않는 변수, 오브젝트 또는 함수를 참고하지 않습니다. 데스크톱 버전의 Flash Player와 비교할 때 Flash Lite 2에서는 존재하지 않는 변수 참고에 대한 검색 속도가 느리므로 성능에 심각한 영향을 줄 수 있습니다.

  • 익명 구문을 사용하여 함수를 정의하지 않습니다(예: myObj.eventName = function{ ...}). function myFunc { ...}; my Obj.eventName = myFunc;와 같이 명시적으로 정의된 함수가 더 효율적입니다.

  • Math 함수와 부동 소수점 수의 사용을 최소화합니다. 이러한 값을 계산하면 성능이 저하됩니다. Math 루틴을 사용해야 하면 값을 미리 계산하여 변수 배열에 저장하는 것을 고려하십시오. 데이터 테이블에서 값을 검색하는 것이 Flash에서 런타임에 값을 계산하게 하는 것보다 훨씬 빠릅니다.

모바일 장치의 Flash Lite 파일 메모리 관리

Flash Lite에서는 파일이 더 이상 참고하지 않는 오브젝트와 변수를 메모리에서 정기적으로 지웁니다. 이것을 가비지 수집이라고 합니다. Flash Lite는 60초마다 한 번씩, 또는 파일 메모리 사용이 20% 이상 갑자기 늘어날 때마다 가비지 수집 프로세스를 실행합니다.

Flash Lite에서 가비지 수집을 수행하는 방법과 시기를 제어할 수는 없지만 불필요한 메모리를 의도적으로 해제할 수 있습니다. 타임라인이나 전역 변수의 경우 ActionScript 오브젝트가 사용하는 메모리를 해제하려면 delete 문을 사용하십시오. 로컬 변수(예: 함수 정의에서 정의된 변수)의 경우에는 delete 문을 사용하여 오브젝트의 메모리를 해제할 수 없지만 오브젝트를 참고하는 변수를 null로 설정할 수 있습니다. 이렇게 하면 해당 오브젝트에 대한 다른 참고가 없는 경우 오브젝트가 사용하는 메모리가 해제됩니다.

다음 두 코드 예제에서는 이러한 오브젝트를 참고하는 변수를 삭제하여 오브젝트가 사용하는 메모리를 해제하는 방법을 보여 줍니다. 첫 번째 예제에서는 타임라인 변수를 만들고 두 번째 예제에서는 전역 변수를 만드는 것을 제외하고 두 예제는 동일합니다.

// First case: variable attached to a movie or 
// movie clip timeline 
// 
// Create the Date object. 
var mcDateObject = new Date(); 
// Returns the current date as a string. 
trace(mcDateObject); 
// Delete the object. 
delete mcDateObject; 
// Returns undefined. 
trace(mcDateObject); 
// 
// Second case: global variable attached to a movie or 
// movie clip timeline 
// 
// Create the Date object.
_global.gDateObject = new Date(); 
// Returns the current date as a string. 
trace(_global.gDateObject); 
// Delete the object. 
delete _global.gDateObject; 
// Returns undefined. 
trace(_global.gDateObject);

앞에서 언급했듯이 delete 문을 사용하여 로컬 함수 변수가 사용하는 메모리를 해제할 수 없습니다. 대신 변수 참고를 null로 설정하면 delete를 사용하는 것과 효과가 동일합니다.

function func() 
{ 
    // Create the Date object. 
    var funcDateObject = new Date(); 
    // Returns the current date as a string. 
    trace(funcDateObject); 
    // Delete has no effect. 
    delete funcDateObject; 
    // Still returns the current date. 
    trace(funcDateObject); 
    // Set the object reference to null. 
    funcDateObject = null; 
    // Returns null. 
    trace(funcDateObject); 
} 
// Call func() function. 
func();

Flash Lite에서 모바일 장치용 데이터 로드

모바일 장치의 파일을 개발할 때 한번에 로드할 데이터 양을 최소화해야 합니다. XML.load 등을 사용하여 외부 데이터를 Flash Lite 파일에 로드하는 경우 들어오는 데이터에 할당된 메모리가 부족하면 장치의 운영 체제에서 "메모리 실패" 오류를 생성할 수 있습니다. 이러한 상황은 남아 있는 총 메모리 양이 충분한 경우에도 발생할 수 있습니다.

예를 들어, 파일에서 100KB인 XML 파일을 로드하려고 하지만 장치의 운영 체제에서 들어오는 해당 데이터 스트림을 처리하는 데 30KB만 할당한 경우 Flash Lite에서는 사용할 수 있는 메모리가 충분하지 않다는 오류 메시지를 사용자에게 표시합니다.

많은 양의 데이터를 로드하려면 작은 단위로(예: XML 파일 몇 개로) 데이터를 그룹화하여 각 단위에 대한 데이터 로드 호출을 몇 차례 수행해야 합니다. 각 데이터 단위의 크기와 이에 따라 필요한 데이터 로드 호출 횟수는 장치와 파일별로 따릅니다. 데이터 요청 횟수와 메모리 실패 가능성 간의 적절한 균형점을 찾으려면 다양한 대상 장치에서 파일을 테스트하십시오.

최적의 성능을 얻으려면 가능한 한 XML 파일을 로드하여 구문 분석하지 말고 간단한 이름/값 쌍에 데이터를 저장한 다음 loadVars를 사용하여 텍스트 파일에서 데이터를 로드하거나 미리 컴파일된 SWF 파일에서 데이터를 로드하십시오.

Flash Lite 컴파일에서 클래스 제외

SWF 파일의 크기를 줄이려면 형식 검사를 위해 클래스에 액세스하고 클래스를 사용하는 기능은 유지하면서 컴파일에서 클래스를 제외해 볼 수 있습니다. 예를 들어, 여러 SWF 파일이나 공유 라이브러리를 사용하는 파일을 개발하는 경우 이를 고려해 볼 수 있습니다. 특히 같은 클래스에 많이 액세스하는 경우는 더욱 그렇습니다. 클래스를 제외하면 이러한 파일에서 클래스가 중복되지 않습니다.

  1. 새 XML 파일을 만듭니다.
  2. XML 파일의 이름을 FLA_filename_exclude.xml로 지정합니다. 여기서 FLA_filename은 .fla 확장명을 제외한 FLA 파일의 이름입니다. 예를 들어, FLA 파일이 sellStocks.fla인 경우 XML 파일 이름은 sellStocks_exclude.xml이어야 합니다.
  3. 파일을 FLA 파일과 같은 디렉토리에 저장합니다.
  4. 다음 태그를 XML 파일에 추가합니다.
    <excludeAssets> 
        <asset name=”className1” /> 
        <asset name=”className2” /> 
    </excludeAssets>

    <asset> 태그에서 이름 특성에 지정된 값이 SWF 파일에서 제외되어야 하는 클래스의 이름입니다. 파일에 필요한 만큼 추가합니다. 예를 들어, 아래의 XML 파일은 mx.core.UIObjectmx.screens.Slide 클래스를 SWF 파일에서 제외합니다.

    <excludeAssets> 
        <asset name=”mx.core.UIObject” /> 
        <asset name=”mx.screens.Slide” /> 
    </excludeAssets>

쉽고 빠르게 지원 받기

신규 사용자이신가요?