在加载其他外部文件之前,必须可以看到Flex预加载器

时间:2011-06-13 12:07:24

标签: flex preloader

我有一个Flex应用程序,可以从数据库中加载一些数据。在此期间,我希望我的自定义预加载器保持可见。

困境是:当我在dispatchEvent(new Event(Event.COMPLETE))处理程序中推迟FlexEvent.INIT_COMPLETE时,加载将永远不会发生,因为未输入下一帧。

如何在所有数据完全加载之前保持加载程序运行?

1 个答案:

答案 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中覆盖更多方法才能使其正常工作。