2011-07-25 12 views
2

Flexです。同様にServlet init()メソッドはアプリケーションの初期化時に実行され、ページを更新する場合には再度呼び出されません。サーブレットinit()のようにflexにinit()メソッドがあるのは、init()、destroy()メソッドを持つ

+0

投稿したその他の質問については、正しい答えを受け入れてください。あなたが聞いた質問のほとんどは、正当な答えが受け入れられる準備ができています。 –

答えて

1

ルートの「アプリケーション」コンポーネントを含むすべてのフレックスコンポーネントは、リッスンして処理できる「initlize」イベントを持っています。

リフレッシュに関係なく、ONCEのみを実行したい場合は、ローカル共有オブジェクトなどの何らかの方法で変数を保存する必要があります。それを行うのは非常に簡単です:

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は、自分自身とその子を構築し終わったときにそのイベントを送出します。このイベントは、コンポーネントが初期化され、自身を測定し、レイアウトを実行し、ステージに追加された後に1回実行されます。

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

それは私が推測することは完全にコンテキストです。サービスコールの作成など、ビジュアル要素で何もする必要がない場合は、initializeを使用することをお勧めします。大規模なレイアウトは、サーバーからデータを要求するのに費やされる時間を無駄にしているビルドには時間がかかります。 –

+0

はい、しかし、この人がコンポーネントから何かを取り出してnullを取得すると、子がnullであるか、オブジェクトの一部のプロパティが設定されていないのは難しいでしょう。したがって、これらの潜在的な問題のいくつかを避けるために、creationCompleteを使用してください。あなたの視点を投稿してくれてうれしいです。なぜなら、私たちが提案したそれぞれの事柄に深みがあるからです。 – chubbsondubs

関連する問題