我有一个Flash应用程序(纯AS,没有Flex框架),我想使用SWFLoader嵌入到Flex应用程序中。
嵌入一个实例效果很好。但是,当我尝试嵌入多个实例(每个实例都有一个单独的SwfLoader)时,真的很奇怪的行为似乎是由多个实例的类定义之间的冲突引起的。这个flash应用程序是用很多单例类编写的,所以我的猜测是这些单例相互重叠并导致奇怪的行为。
我尝试将Flash应用程序加载到子应用程序域中,但这似乎也没有多大帮助。有人遇到过这个问题吗?
答案 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);
我建议使用第一种方法,因为它不会覆盖定义。