在Flex应用程序中嵌入Flash组件的多个实例

时间:2009-03-05 20:28:16

标签: flex flash

我有一个Flash应用程序(纯AS,没有Flex框架),我想使用SWFLoader嵌入到Flex应用程序中。

嵌入一个实例效果很好。但是,当我尝试嵌入多个实例(每个实例都有一个单独的SwfLoader)时,真的很奇怪的行为似乎是由多个实例的类定义之间的冲突引起的。这个flash应用程序是用很多单例类编写的,所以我的猜测是这些单例相互重叠并导致奇怪的行为。

我尝试将Flash应用程序加载到子应用程序域中,但这似乎也没有多大帮助。有人遇到过这个问题吗?

1 个答案:

答案 0 :(得分: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);

我建议使用第一种方法,因为它不会覆盖定义。