2011-01-26 20 views
1

我使用Flex Builder 3来构建一个相当大的项目。我遇到了模块间相互踩踏以及应用程序/模块之间的冲突。我的结构看起来像下面这样:如何通过SWFLoader加载时指定ApplicationDomain.currentDomain?

主要应用 | --application 2 | --application 3 | --application 3

(应用2是主应用程序的孩子,而应用2和3是兄弟姐妹,应用2名儿童)

在现实中,它是比这更复杂,但是这是问题的开始。最后,我可以让树有四层,甚至可以有五层......如果它可以工作。主应用程序文件仅包含一个画布和一系列按钮。第二个应用程序包含一个垂直选项卡导航器,其中两个选项卡中的画布作为容器,列表和树视图。应用程序3非常复杂,应用程序4中的事件日历也是如此。只要不发生任何交互,所有内容都会加载并显示正常。在查看模块2和3时,都有组合框。第一个被访问的工作正常,但第二个抛出错误,我认为是沙箱侵犯。我将应用程序2,3和4转换为模块,并使用ModuleLoader将它们带入并指定ApplicationDomain = currentDomain。现在,最后(现在是模块)中的日历功能根本无法显示。我可以跟踪值和抛出警报框,所以我知道它至少是加载,但没有显示。作为一个测试,我剥去了这个模块,除了一个标签上写着“Test”并且它显示正常,但是一旦我把它放到Canvas组件里面,什么也不显示。但是,如果我将该模块转换回应用程序并使用SWFLoader加载它,它会显示正常,但我确定只要我尝试将另一个应用程序并行引入,我将返回到我所在的位置入门。我可以轻松地使用so.data和LocalConnections来回传递信息,但是如何以应用程序的形式加载SWF并指定应用程序域?将所有东西都作为currentDomain存在并且玩起来会很好。

回答

2

我不知道我真正了解你的Blurb的,但如果你的标题是准确的,你可能会发现the sample on this page是有帮助的。

+0

这可能做到这一点,但是当我尝试使用SecurityDomain中,它给了我一个沙箱冲突。如果我删除该行,目前看来工作。我需要建立更多的“应用程序”并查看它们的行为。我认为LoaderContext是我需要的。 私有函数setMemberPanel():无效{ \t VAR上下文:的LoaderContext =新的LoaderContext(); // \t context.securityDomain = SecurityDomain.currentDomain的; \t context.applicationDomain = new ApplicationDomain(); \t memberContext.loaderContext = context; \t memberContext.source = “btl_memberTools.swf”; } – 2011-01-26 17:10:01

相关问题