Apache flex 在Flex应用程序中嵌入flash组件的多个实例
我有一个flash应用程序(纯AS,无Flex框架),我希望使用SWFLoader将其嵌入Flex应用程序中 嵌入一个实例效果很好。然而,当我尝试嵌入多个实例(每个实例都有一个单独的SwfLoader)时,有一种非常奇怪的行为似乎是由多个实例的类定义之间的冲突引起的。这个flash应用程序是用很多单例类编写的,所以我猜这些单例相互重写,导致了奇怪的行为Apache flex 在Flex应用程序中嵌入flash组件的多个实例,apache-flex,flash,Apache Flex,Flash,我有一个flash应用程序(纯AS,无Flex框架),我希望使用SWFLoader将其嵌入Flex应用程序中 嵌入一个实例效果很好。然而,当我尝试嵌入多个实例(每个实例都有一个单独的SwfLoader)时,有一种非常奇怪的行为似乎是由多个实例的类定义之间的冲突引起的。这个flash应用程序是用很多单例类编写的,所以我猜这些单例相互重写,导致了奇怪的行为 我尝试将flash应用程序加载到一个儿童应用程序域中,但这似乎也没有多大帮助。有人遇到过这个问题吗?您可能希望将SWF加载到它自己的应用程序域(
我尝试将flash应用程序加载到一个儿童应用程序域中,但这似乎也没有多大帮助。有人遇到过这个问题吗?您可能希望将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);
我建议使用第一种方法,因为它不会覆盖定义。您可以尝试使用两种不同的应用程序吗?这样我们就可以确定你的单例应用程序是否会受到指责?当两个应用程序加载到子应用程序域中时,单例应用程序不会发生冲突。只有当它们加载到同一应用程序域时,才会发生冲突。让我进一步调查以找到bug。