2011-06-13 48 views
1

我有一个Flex应用程序从数据库加载一些数据。在此期间,我希望我的自定义预加载器保持可见状态。Flex预加载器必须可见,直到加载其他外部文件

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

我怎样才能保持加载器运行,直到所有的数据完全加载?

回答

0

预加载器基本上是一个精灵。所有的flex组件都可以扩展精灵,所以你可以很容易地继续使用精灵。我不确定覆盖应用程序框架的部分是多么困难,它删除了预加载器精灵..但是,我认为您可以使用自定义组件将精灵添加回舞台。

您可能必须创建一个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"/> 

现在,当你完成从预加载改变应用程序将currentState了。您可能需要重写UIComponent中的更多方法才能使其正常工作。