2011-07-25 69 views

回答

1

所有的flex组件,包括根“应用程序”组件都有一个“initlize”事件,您可以监听和处理。

如果你希望它只运行一次,不管是否刷新,你都需要以某种方式存储一个变量,比如使用本地共享对象。这很容易做到:

private function onInit():void{ 
    var appSO:SharedObject = SharedObject.getLocal("yourappdata"); 
    if(appSO.size < 0){ 
    //do your init code 
    appSO.data.initialized = true; 
    appSO.flush(); 
    } 
} 
2

我会建议不要使用初始化事件,而是使用creationComplete。所有UIComponent在完成构建自己及其子项时都会派发该事件。该事件在组件初始化后有一次执行,有机会进行自我测量,执行布局并添加到舞台上。

<mx:Application ... creationComplete="init()"/> 
    <mx:Script> 
     private function init() : void { 
      ... // put your initialization routine here 
     } 
    </mx:Script> 
</mx:Application> 
+0

这完全是我猜想的上下文。如果您不需要对视觉元素进行任何操作,例如拨打服务电话,则优先使用初始化。大型布局可能需要很长时间才能构建,可能会浪费时间来花费时间从服务器请求数据。 –

+0

是的,但是当这个人试图从组件中拉出某些东西并且得到空值时,它们都会困惑为什么儿童是空的或者对象上的某些属性尚未设置。因此,为了解决这些潜在问题中的一些,请使用creationComplete。我很高兴你发布了你的观点,因为它确实显示了我们建议的每件事情的更多深度。 – chubbsondubs