2010-03-25 2 views
1

Flash CS4에서 Flex Builder 3로 가져오고있는 SWC에서 무슨 일이 일어나는지 이해하려고합니다. 특히 Designer에서 제공 한 SWC를 사용하고 있습니다. 커스텀 프리 로더의 애니메이션 (서브 클래 싱 된 DownloadProgressBar).Flex Builder 3 및 키 프레임 애니메이션으로 가져온 Flash SWC 이해하기

이해하려고 문제이다는 FlexEvent.INIT_COMPLETE이를 실행하여 SWC를 제거하여, 내가 정리 해고되면 :

removeChild(myPreloader); 
myPreloader = null; 

내가 제거한 후에도 불구하고 성공하는이 (, 호출 전후에 this.numChildren을 비교하여 검사 했으므로) 키 프레임 애니메이션은 계속 실행됩니다 (시각적으로 표시되지 않음). 이것은 디자이너가 애니메이션의 타임 라인에 추적을 배치하여 감지합니다 (플래시에서).

아무도 내가 왜 서브 클래 싱 된 DownloadProgressBar에서 애니메이션을 제거한 후에도 계속 실행되고 있다고 말할 수 있습니까?

SWC를 가져 와서 플래시 측면의 리소스 정리 (obj-c의 메모리 해제와 비슷)를 관리하는 것이 표준 방법입니다. Flex 측에서 자식을 제거해도 애니메이션이 멈추지 않는다는 것을 직감적으로 알 수 있습니다.

모든 단서가 크게 감사하겠습니다.

+0

+1 심슨 가족 용 – adamcodes

답변

0

기본적으로 SWC 파일은 SWF가 포함 된 ZIP 파일 일뿐입니다. 그래서 무대에서 MovieClip을 제거하는 중이지만 정지하거나 언로드하지는 않습니다. 당신은 당신이 메모리를 확보하는 단계에서 항목을 삭제 한 후

myPreloader.stop(); 

애니메이션 및

myPreloaderLoader.unload(); 

을 중지하려고 할 수 있습니다.

Flash Player 가비지 수집이 항상 올바르게 작동하는 것은 아닙니다. myPreloader 내에서 실행되는 ActionScript가 있으면 계속 실행되며 가비지 수집 중에 무시됩니다. 일반적으로 모든 AS 클래스에 대해 clear() 또는 destroy() 메서드를 포함하고 Event.REMOVED_FROM_STAGE에 호출하는 것이 가장 좋습니다. 이것은 동료 동료가 수행해야하지만 내 경험상 가장 깨끗한 절차입니다.

관련 문제