2013-05-30 6 views
0

나는이 SWF-S, main.swfanother.swf 있습니다.
main.swf는 런타임에 another.swf를로드합니다. 그들을 위해
대응 클래스는 MainAnother 있습니다.
그들 import 일반적인 클래스 Constant 모두."main"swf 가져 오기가 작업 스크립트 3에서로드 된 swf 가져 오기를 숨 깁니 까?

문제는 :
클래스 Another에 대한 새로운 상수를 정의처럼 나는, 클래스 Constant을 변경하는 경우에, 나는 반드시 another.swf를 컴파일하고자합니다.
그런 다음 나는 main.swf 및로드 another.swf을 실행하지만 Constant의 변경 내용이 적용되지 않습니다! 반면에

, 나는 another.swf에 적용되는 변경을 main.swf을 다시 컴파일해야합니다. importmain.swf에 의존하므로 이후 another.swfmain.swf에 의해로드처럼
는 것 같습니다.
실행할 main.swf 첫째, 클래스 Mainimport 먼저 Constant 클래스, 그래서 어떤 곧 import 숨겨진 (또는 무시?)되고, 이것이 사실입니까?

한 번만 실행 import이며, 처음에 의해 실행 .SWF를 재생?

.SWF 부하 flash.display.Loader 클래스에 의해 수행된다. 클래스가로드

답변

1

, 정식 도메인 이름 (pacakge 명 + 클래스 이름) 종류의 글로벌 레지스트리에 추가됩니다. main.swfConstant 클래스를로드하면 클래스가 캐시됩니다. 이 레지스트리 그렇게 main.swf는 컴파일 시점의 캐시 된 Contant 클래스 정의가 컴파일시에 생성됩니다. 당신이 Constant을 변경하는 경우

사실, 당신은 main.swf 만 다시 컴파일하고 수정 정의 another.swf에서 사용할 수 있습니다 볼 수 있습니다.

+0

그건 사실이야! main.swf 만 다시 컴파일하여 변경 사항을 적용 할 수 있으며 이로 인해서 문제가 발생합니다. 이러한 모든 메커니즘을 설명하는 공식 문서 (adobe 또는 기타)가 있습니까? 나는 정말로 모든 세부를 읽는 것을 좋아할 것이다, 감사!! –

+0

이 캐시 동작이 저를 괴롭히는 이유는 실제로로드 할 .swf가 많기 때문입니다. 그리고 클래스가 캐시 된 경우 main에 대한 변경을하지 않더라도 main과 other .swf를 모두 다시 컴파일해야합니다. –

+0

@MarsonMao 글쎄요, 전역 변수 클래스를 글로벌 인클루드 (global include)로 생각해보십시오.이 클래스를 변경하면 그것을 사용하는 모든 프로젝트를 다시 컴파일해야합니다. 정상입니다. – Vesper