【问题标题】:Flex 3 to Flex 4 warningFlex 3 到 Flex 4 警告
【发布时间】:2012-12-12 03:08:59
【问题描述】:

您好,我正在将 flex 3 迁移到 flex 4,我有 1 个警告,我尝试修复它,但没有任何效果。

警告是:数据绑定将无法检测到顶级应用程序的分配

在 flex 3 中我有 application.Application,现在我有 FlexGlobals.topLevelApplication

我有 1400 个 FlexGlobals.topLevelApplication 和 +- 150 个 .AS 文件。

我尝试使用 Application(FlexGlobals.topLevelApplication)、mainAPP(FlexGlobals.topLevelApplication),但没有任何效果,唯一认为干净的警告是如果我添加 [Bindable] public var myApplication:Object = FlexGlobals.topLevelApplication;到所有 .AS 文件,但是当我运行项目并尝试登录应用程序时,我遇到了动作脚本错误

错误 #1009:无法访问空对象引用的属性或方法。

【问题讨论】:

  • 对 topLevelApplication 的 1400 次引用听起来您可能在代码库中使用封装存在问题。

标签: apache-flex flex4 flex3 flash-builder


【解决方案1】:

你是对的。访问应用程序的简洁方式是通过 FlexGlobals.topLevelApplication。

[Bindable]
public var app:mainApp = mainApp(FlexGlobals.topLevelApplication); // fail fast to find erros

应该工作,如果不是这样,您似乎太早地访问该实例。在调度 FlexEvent.CREATION_COMPLETE 之后,您应该引导应用程序(并从那里继续)。另外,我建议如果你在你的类中引入一个字段,比如

private const app:mainApp = mainApp(FlexGlobals.topLevelApplication); // fail fast to find errors

protected final get app():mainApp { return app; }

在您的应用程序中干净地访问该字段并避免对您的应用程序过多的严重依赖。

PS:类名,即使后缀为 .mxml 也应以大写字母开头。

【讨论】:

  • 不要忘记将 topLevelApplication 转换为应用程序;因为我相信它返回一个通用对象。
  • Tnx 的答案是如此的投入 myApplication:Object = FlexGlobals.topLevelApplication 我需要把 myApplication:mainapp = FlexGlobals.topLevelApplication??
  • 试图在这么大的项目中解决这个问题是 a** 的痛苦 :( 奇怪的是所有项目都使用这个警告所有事情都没有问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-24
  • 2011-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-21
相关资源
最近更新 更多