[flash] Flash CS4는 놓지 않습니다.

Flash 프로젝트가 있고 많은 소스 파일이 있습니다. 나는 상당히 많이 사용되는 수업을 Jenine이라고 부릅니다. 최근에 Jenine을 한 네임 스페이스에서 다른 네임 스페이스로 이전했습니다. 나는 우리가 준비되었다고 생각했다. 나는 시간이라고 생각했다. 새로운 Jenine은 모든면에서 더 좋았습니다. 코드 부풀림을 잃어 버렸고 몇 가지 흔적 클래스 관계에서 자신을 분리했으며 마침내 그녀는 항상 그녀의 마음에 비밀리에 알려진 네임 스페이스로 돌아갔습니다. 에 속한. 그녀는 자신의 종류 중 하나였습니다.

불행히도, Flash는 그 중 아무것도 없습니다. 어쩌면 그것은 첨부 파일을 형성했을 것입니다. 아마도 Jenine이 분리 되기를 원하지 않았을 것입니다. 어느 쪽이든, 그것은 오래된 기억의 Jenine의 완벽한 버전에 매달렸다. 계속하지 않았다. 그녀의 (기능) 호출을 무시했습니다. 그녀는 새로운 공용 인터페이스를 잊어 버렸습니다. 대신, 생성 한 Jenine의 모든 인스턴스는 항상 클래스 경로에 이르기까지 항상 이전 버전의 복사본이었습니다.

var jenineInstance:Jenine = new Jenine();
trace( getQualifiedClassName(jenineInstance));
// Should print: com.newnamespace.subspace::Jenine
// Prints: com.oldnamespace.subspace::Jenine
// Ah, young love!

우리는 싸웠다. 내가 말하거나 한 일 중 일부를 자랑스럽게 생각하지 않습니다. 결국, 격렬한 분노 속에서, 나는 Jenine에 대한 모든 언급을 완전히 삭제했습니다. 그녀는 완전히 시스템에서 완전히 지워졌습니다. 커서가 상자의 차가운 뚜껑과 같은 “휴지통 비우기”메뉴 옵션에 커서를 놓았습니다.

플래시가 회복되지 않았다고 생각합니다. 오늘날까지도 여전히 Jenine의 기억에 고착되어 있습니다. 그녀의 오래되고 불완전한 정의는 여전히 버려진 유령과 같은 내 프로젝트를 통해 떠 오릅니다. 플래시를 강제로 컴파일 할 때마다 여전히 영화에 그녀를 사랑스럽게 삽입하여 작은 신사처럼 다른 살아있는 클래스 사이에 그녀의 정의를 내포합니다. 그들이 그녀를 볼 수 있는지 궁금합니다.

플래시와 나는 더 이상 이야기하지 않습니다. 내 코드를 작성하고 컴파일합니다. 누군가가 자신의 소스 코드 도매를 새로운 클래스에 복사 한 것처럼 Flash가 관심을 보이지 않는 것처럼 Summer라는 도시에 Jenine과 거의 동일한 모습을 가진 새로운 소녀가 있습니다. 대부분의 날은 내가 주위를 보지 못하고 있다고 생각할 때 주위를 돌아 다니며 내 의견에 나쁜시를 씁니다.

플래시 코드 기반의 끔찍한 어둠의 석호에서 단 하나의 고통스러운 파문 일뿐 인 비슷한 경험을 가진 사람이 아무도 없기를 바랍니다. 컴파일러가 사용하는 캐시를 지우는 방법을 아는 사람이 있습니까?



답변

Flash에는 여전히 클래스의 컴파일 된 바이트 코드 인 ASO 파일이 있습니다. Windows에서는 다음과 같은 ASO 파일을 볼 수 있습니다.

C:\Documents and Settings\username\Local Settings\Application Data\Adobe\Flash CS4\en\Configuration\Classes\aso

Mac에서 디렉토리 구조는 다음과 유사합니다. /Users/username/Library/Application Support/


해당 파일을 직접 제거하거나 Flash Control->Delete ASO files에서 제거하도록 선택할 수 있습니다.


답변

ASO 파일을 삭제하십시오.

ASO 파일은 컴파일 된 버전의 클래스 파일로 캐시됩니다. IDE가 변경 될 때 오래된 캐시를 놓아 두는 것이 훨씬 낫지 만 때로는 수동으로 삭제해야합니다. ASO 파일을 삭제하려면 : Control> Delete ASO Files.

이것은 CS3에 도입 된 “보고 싶지 않은 나의 변화들-그리기-추가-추적-지금 모든 것이 작동합니다”버그의 원인이기도합니다.


답변

다른 컴퓨터를 사용하여 컴파일하면 어떻게됩니까? 새로 설치 한 것은 사랑 스럽습니다. 나는 당신의 기계 가 질투하지 않기를 바랍니다 .


답변

도움이 될 수있는 하나의 관련 동작을 찾았습니다.

Flash는 타임 스탬프를보고 소스 파일을 다시 컴파일해야하는지 여부를 확인합니다. 컴파일 된 버전이 소스 파일보다 오래된 경우 다시 컴파일됩니다. 그러나 컴파일 된 버전이 동일한 소스 파일에서 생성되었는지 여부는 확인하지 않습니다.

특히 액션 스크립트 파일의 버전을 관리하고 변경 사항을 되 돌리면 일반적으로 되 돌린 파일에 오래된 타임 스탬프가 있고 Flash에서이를 무시합니다.


답변

또한 새로운 네임 스페이스 클래스를 사용하려면 다음을 수행 할 수도 있습니다

var jenine:com.newnamespace.subspace.Jenine = com.newnamespace.subspace.Jenine()


답변

swf 파일이 여러 개 있습니까? 클래스를 swf 중 하나에서 가져 오면 다른 swf도 동일한 버전의 클래스를 사용합니다. 하나의 swf에 *가있는 하나의 오래된 가져 오기가이를 수행합니다. 모든 것을 다시 컴파일하고 작동하는지 확인하십시오.


답변

전체 프로젝트 폴더에서 grep문자열 oldnamespaceJenine파일 내부 를 찾으려면 아날로그를 사용하십시오 . 그러면 다음에 수행 할 단계를 알게됩니다.