2009-02-26 4 views
0

私は、いくつかのコンポーネントとリスナーを持つTitleWindow mxmlクラスを持っています。 creationCompleteとinitの状態では、GUIのイベントをリッスンするリスナーをいくつか追加します。実際にコンポーネントを表示しないで、Flexと偽のMxmlの初期化を行いました。(もっと納得のいく)

「ボタン」上のユーザーのクリックが、私は次のコードでTitleWindowのシングルトンを作ったとき、このTitleWindowのがのみ表示されます。ユーザーが何回かのように、このウィンドウを呼び出しますので、私はシングルトンを必要

public static function getInstance():MyWindow 
{ 
    if (MyWindow.singleton) 
    { 
     return MyWindow.singleton; 
    } 
    else{ 
     MyWindow.singleton = new MyWindow(); 
     return MyWindow.singleton; 
    }    
} 

彼が望むほど多く、私は1つだけ必要です。

いくつかの特別な外部イベントでは、MyWindowのボタン上でリスナーを「変更」する必要があります(リスナーを削除して新しいものを追加する必要があります)。

私のアプリケーションが起動するとき、私はまだメモリにMyWindow.getInstance()を持っています。 コンポーネントの実際のレンダリングが行われなかった場合、リスナーを追加/削除しても効果はありません。アプリ起動時に次のコードを使用するとイベントになります。

驚くほど
myWindow= MyWindow.getInstance(); 
    myWindow.initialize(); 

ない私「ショー」(「レンダリング」)mywindowを、少なくとも1回、その後mywindowのインスタンス上のイベントの変更が完全に動作するかどうか。

起動時にこのコンポーネントを初期化せずに完全に偽装できますか?

ありがとうございます!

答えて

2

ボタンを保持するコンテナの種類はどれですか? Multiple View Containerを使用している場合は、creationPolicyallに設定してみてください。 Single View Containersすべての子供を一度に作成し、この問題に直面してはいけません。私はこれを取得することができフレックス3.0ドキュメントから

すべてのコンテナのデフォルトの作成ポリシーは、Applicationコンテナを除いて、親コンテナのポリシーです。 Applicationコンテナのデフォルトポリシーはautoです。

これはすべての問題の原因と思われます。

アップデート:私はこれが予想されることになったと思ったので、私は、この先に言及しなかった:) allcreationPolicyを設定すると、よりゆっくりと、アプリケーションの負荷になります。したがって、Ordered Creationを読んでください。このテクニックは、コントロールがすべて一度に表示されるかどうか(すべてのコントロールが作成された後のデフォルトの動作)、またはステップごとに、作成されます。

+0

あなたが問題だったのは、起動時に特定のウィンドウが2秒かかってシステムがハングしてしまうことです。レンダリングがいつ行われるかを知るイベントがあるのだろうか – coulix

+0

ドキュメントを読んだら、すでにこれを知っている:) – dirkgently

関連する問題