我有一个Flex应用程序,可以从数据库中加载一些数据。在此期间,我希望我的自定义预加载器保持可见。
困境是:当我在dispatchEvent(new Event(Event.COMPLETE))
处理程序中推迟FlexEvent.INIT_COMPLETE
时,加载将永远不会发生,因为未输入下一帧。
如何在所有数据完全加载之前保持加载程序运行?
答案 0 :(得分:0)
预加载器基本上是一个精灵。所有flex组件都会扩展sprite,因此您可以非常轻松地继续使用sprite。我不确定覆盖删除预加载器精灵的应用程序框架部分是多么困难..但是,我认为你可以使用自定义组件将精灵添加回舞台......
您可能必须创建一个UIComponent并添加预加载器组件,以便可以将其与状态一起使用。然后将NEW UIComponent设置为默认状态。
以下是“假的”代码。
public class MyFlexPreLoader extends UIComponent{
private var var preloader:YourBasePreLoader; //This is the preloader you're already using
override protected function createChildren(){
//Add the Preloader here!
preloader = new YourBasePreLoader();
addChild(preloader);
}
//Also add event listeners to manipulate your preloader to show the progress of loading stuff from DB
}
然后在你的应用中
<comp:MyFlexPreLoader includeIn="preloading"/>
现在,当您完成后,将应用的当前状态更改为预加载。您可能需要在UIComponent中覆盖更多方法才能使其正常工作。