2009-03-05 3 views
1

SWFLoader를 사용하는 Flex 애플리케이션 내부에 포함하려는 플래시 애플리케이션 (순수 AS, Flex 프레임 워크 없음)이 있습니다.Flex 애플리케이션에 여러 개의 Flash 구성 요소 인스턴스 포함하기

하나의 인스턴스를 포함하면 잘 작동합니다. 그러나 여러 개의 인스턴스 (각각 별도의 SwfLoader가 있음)를 포함 시키려고하면 여러 인스턴스의 클래스 정의간에 충돌로 인해 발생하는 것처럼 보이는 이상한 동작이 발생합니다. 이 플래시 응용 프로그램은 많은 싱글 톤 클래스로 작성되었으므로 이러한 싱글 톤은 서로 무시하고 이상한 동작을 유발합니다.

플래시 응용 프로그램을 하위 응용 프로그램 도메인으로로드하려고 시도했지만 많은 도움이되지는 않습니다. 누구든지이 문제에 직면 했습니까?

+0

두 개의 다른 응용 프로그램을 사용해 볼 수 있습니까? 그런 식으로 우리는 당신의 싱글 톤이 비난받을 것인지 아닌지 확신 할 수 있습니다. – dirkgently

+0

두 응용 프로그램이 하위 응용 프로그램 도메인에로드되면 단일 개체가 충돌하지 않습니다. 충돌하는 응용 프로그램 도메인에로드되는 경우에만 해당됩니다. 버그를 찾기 위해 더 자세히 조사하겠습니다. – marketer

답변

2

이름 충돌을 피하기 위해 SWF를 자체 응용 프로그램 도메인 (자식이 아님)에로드하려고합니다. 그것은 정의를 덮어 쓰지 않습니다으로,

var swfLoader:Loader = new Loader(); 
var loaderContext:LoaderContext = new LoaderContext(); 

// child SWF adds its unique definitions to 
// parent SWF; both SWFs share the same domain 
// child SWFs definitions do not overwrite parents 
loaderContext.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); 

// child SWF uses parent domain definitions 
// if defined there, otherwise its own 
loaderContext.applicationDomain = ApplicationDomain.currentDomain; 

// child SWF domain is completely separate and 
// each SWF uses its own definitions 
loaderContext.applicationDomain = new ApplicationDomain(); 

// Load the swf file 
swfLoader.load(new URLRequest("file.swf"), loaderContext); 
내가 첫 번째 방법을 사용하는 것이 좋습니다 것

:

는 응용 프로그램 도메인의 세 가지 유형이 있습니다.

관련 문제