我们的空中应用程序加载多个swf,它们共同组成了一课。
如果我们将它们加载为串行而不是并行,则所有swfs中的代码都被破坏。 (在这个问题上有一个前面的stackoverflow q)。如果它们并行加载,所有时间线顶级代码都可以工作。
在Mac上,无论加载swfs的顺序如何,所有代码都能正常工作,包括深入嵌套MC内部MC的代码。
在PC上,(每个swf时间轴的)顶层代码始终有效,但深层嵌套代码仅依赖于swfs加载完成和初始化的顺序运行。
将swfs引用为A,B,C和D,如果init的顺序是A,B,C,D,那么swf A中的代码(仅深度嵌套代码)不起作用 - 即使stop()不是加工。这只发生在PC上。
如果swfs初始化的顺序是B,A,C,D甚至C,B,A,D,那么所有事情都应该如此。 (这是一个相当长的过程,确定这种模式!)
有时,不止一个加载瑞士法郎是有问题 - 我一直无法发现一个明显的模式背后。
所有4个swfs运行良好,独立运行。所有4个swfs在Mac版本中运行良好。所有4个swfs应该加载到他们自己的应用程序域中,因为Air不允许其他任何事情,并且每次应用程序域也被指定为新域。没有可检测到的域问题 - 没有错误被抛出。
很明显,有些东西是博克。我不相信我的代码中存在这样的事情,因为应用程序在Mac上完美运行,并且仅在PC版本中依赖于加载完成顺序而被破坏,并且只有深层嵌套的代码才会生效。
borked(带有非功能代码的MC)的项目不作为符号导出到库中。
有没有人遇到过这个或者类似的东西?
一些变化,我将用实验:
1)导出符号管委会与库中的代码,以便它们在帧1加载(Init事件触发之前),即使他们并不需要这个。
2)不手动指定应用程序域,但让它默认(为相同的值)
我会在这里记录我的发现。任何人都可以想到其他值得改变的东西,看看是否有影响?
我想看看充满版本的AIR版本。此外,我需要知道您在卫星模块及其AS版本中使用的代码类型。我希望你在Win \ * Nix \ OSX上用最新版本的AIR测试虚拟框中的所有解决方案。并在这里发布所有这些结果。所以我们可以帮助您找到解决方案。并且请把我和你以前的问题联系起来,你在上面谈过。谢谢! – Eugene 2010-09-02 10:57:47
嗨尤金,我不能完整的代码公开,因为它是为NDA客户。 空气版本是1.5.1所有代码是AS3/FP10。 模块使用安全加载方法来访问主安全/应用程序域。 Win和Mac环境均运行Air 2.0.3 未设置appDomain没有区别。 不幸的是,SO似乎删除了我之前的问题。本质上,答案如上 - 串行加载swfs(在开始下一个之前等待INIT)导致应用程序域交叉的主要问题。奇怪的是,在同一时间加载它们,修复它。 – Stray 2010-09-02 14:13:40
迄今为止的数据: 如果加载订单是ACBFED,则A和B都是borked。 C没有borkable的内容,D,E和F都很好。 如果加载顺序是FDBECA一切都很好。 将第一个swf(对INIT)加载的订单以A或B作为第一个swf borked。 F包含与A相同的内容,可以先载入而不会被插入。 为什么? 感激地收到了任何线索。 – Stray 2010-09-03 20:23:00