在特定时间调用flex initComplete

时间:2010-05-31 09:57:52

标签: flex preloader

以下是对Flex中预加载器的完整功能的覆盖。

private function initComplete(e:Event):void
  {
   //dispatchEvent(new Event(Event.COMPLETE));
   cp.status.text="Configuring... Please Wait";
  }

我想要做的是当应用程序已完成加载时我想将预加载器文本更改为“正在配置”。 然后我想去我的代码中做一堆设置。

一旦我完成了所有设置,我想如何让预加载器从我的代码中的其他位置调度其Event.complete?

我尝试过Application.application.preloader但它出现了null。

所以我想我的问题是如何从我的应用程序中的任何位置访问预加载器。 更好的方法是将所有设置类作为我的预加载器类的成员吗?

2 个答案:

答案 0 :(得分:1)

可能有用的一点是模型 - 视图 - 控制器模式。您是否正在为您的应用程序使用框架,如Mate,Swiz或Cairngorm?

例如,如果您使用Mate,则可以执行以下操作:

  • 使用属性(例如applicationState)
  • 创建AppStateManager类
  • 使用EventHandler为FlexEvent.INITIALIZE事件创建一个EventMap。在此处理程序中,将AppStateManager.applicationState设置为“CONFIGURING”
  • 之类的内容
  • 您的EventMap有一个注入器,它将applicationState属性注入视图中。注入器侦听此属性的更改并更新视图。在这种情况下,它可能只会被注入主视图。
  • 在主视图中,您有一个名为applicationState的公共可绑定属性,该属性由Mate注入。
  • 在此属性的setter中,您可以使用if / then或switch,根据状态执行不同的任务。例如,如果applicationState ==“COMPLETE”,那么this.preloader.dispatchEvent(Event.COMPLETE)或类似的东西。

详细信息是伪草图,但我们的想法是使用Flex的绑定在更改时通知视图组件,并拥有维护状态的共享对象。不确定这是不是你想要的......

答案 1 :(得分:0)

组件LifeCycle以特定顺序执行特定内容,而最后一个元素是使组件可见。

听起来我觉得你想把这个可见的设置推迟到其他东西。但是,如果您使用LifeCycle组件,我会成像,这将是一个非问题。

你需要做什么样的app init东西?