2011-07-02 6 views
6

누군가가 getDefinitionByName과 getDefinition inA AS3의 차이점을 설명 할 수 있습니까?AS3의 getDefinition과 getDefinitionByName의 차이점

외부 SWF를로드 할 때 오류 # 1065가 발생하므로 getDefinitionByName을 사용할 수 없습니다.

그러나 externalSWF_ContentLoaderInfo.applicationDomain.getDefinition을 사용하면 정상적으로 작동합니다.

그래서 getDefinitionByName이 className을 찾지 못하는 이유는 무엇입니까? 정의가로드 된 SWF의 applicationDomain 내부에 있으면 기본 SWF에도없는 이유는 무엇입니까? (저는 Flex를 사용하고 있습니다).

논외 나는 태그에 getDefinition과의 getDefinitionByName :(

답변

6

에 getDefinition를 추가하는 클래스, 네임 스페이스 또는 함수의 정의를 반환하는 ApplicationDomain하는 방법입니다 수 있도록 나는 새로운 태그를 만들 수 없습니다 .

의 getDefinitionByName는 새로운 객체를 인스턴스화하는 데 사용할 수있는 클래스의 객체를 반환 flash.utils에서 패키지 레벨 함수입니다. 정의는 이미 ApplicationDomain에 어딘가에로드해야합니다.

외부 SWF와 함께 getDefinitionByName을 만들 수없는 이유는 별도의 ApplicationDomain에로드된다는 것입니다. 두 번째 예제는 올바른 ApplicationDomain을 대상으로하기 때문에 작동합니다. 첫 번째 예제를 만들려면이 같은 현재의 ApplicationDomain에 외부 SWF를로드해야합니다 작업 : 그것은 로더 컨텍스트의 속성으로 현재의 ApplicationDomain을 전달하기 때문에

var request:URLRequest = new URLRequest("externalSWF.swf"); 
var context:LoaderContext = new LoaderContext(); 
context.applicationDomain = ApplicationDomain.currentDomain; 
var loader:Loader = new Loader(); 
loader.load(request,context); 

이 작동합니다.

+0

좋습니다. getDefinitionByName()은 기본 응용 프로그램의 ApplicationDomain.currentDomain.getDefinition()에 대한 바로 가기 유형입니다. – Enrique

+0

그 당시의 ApplicationDomain에서 그렇습니다. – shanethehat

+0

현재 사용중인 응용 프로그램 도메인을 결정하는 요소는 무엇입니까? getDefinition (호출 스택의 맨 위에있는 메소드)을 호출하는 메소드가 포함 된 클래스의 응용 프로그램 도메인 (AD)입니까? – Triynko