我有一个项目,有几个组件加载一个预加载swf。
preloader swf严格地说是AS3(没有flex),并使用Loaders加载两个不同的swf,它们都使用flex库(静态编译,而不是rsl)。
当我在Linux下编译所有这三个文件并运行最终的预加载器时,其中一个swf加载失败,下面的例外(在这篇文章的底部)被抛出。
如果我在Windows中使用相同的ant任务编译相同的组件,则组件加载正确无误。 Windows文件也是683个字节更小。
在linux和windows下使用flex SDK 3.2.0和3.3.0是这样的。
你见过这种行为吗? 你可以提供任何build议,为什么它可能会发生,或如何确定什么是错的?
TypeError: Error #1009: Cannot access a property or method of a null object reference. at mx.managers::FocusManager/activate() at mx.managers::SystemManager/activateForm() at mx.managers::SystemManager/activate() at mx.core::Application/initManagers() at mx.core::Application/initialize() at OC_Footer/initialize() at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::childAdded() at mx.managers::SystemManager/initializeTopLevelWindow() at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::docFrameHandler() at mx.managers::SystemManager/docFrameListener()
那么等一下,你是否在每个平台上使用不同版本的SDK? 这肯定会造成一些分歧(至少在swf的大小上)
IIUC,当你在浏览器中加载页面时,你会得到这个错误,对吗? 从堆栈跟踪中很难判断出现了什么问题,但是我可以告诉你,我曾经在Windows上得到类似的错误,并且与键盘事件有关(例如,当弹出窗口可见时,使用Tab键在元素之间移动,和类似的东西)。 对不起,我无法提供更准确的诊断。
我不知道我已经解决了真正的问题(为什么在不同的操作系统下编译是不同的),但是我发现新版本的flex SDK 没有出现同样的问题。
我在这里为这个问题创建了一个bug:
https://bugs.adobe.com/jira/browse/SDK-20147
简而言之,构建3958(在创建bug的时候使用flexbuilder的默认设置 – 这可能仍然是真的)似乎有一些小错误。 升级flex SDK以构建4852可以缓解症状,并且可以在许多环境中成功构建项目。