2011-06-27 12 views
1

私はAIRアプリケーションでいくつかのテーマを実装することに決めました。 CSSファイルをSWFファイルに変換し、メインファイルからスタイルリンケージを削除しました。ファイルに保存されているユーザー設定に基づいて、使用するテーマを決定します。すなわち、 StyleManagerクラスを使用してSWFファイルをロードします。Flex AIRアプリケーションで動的にスタイルをロード

StyleManager.loadStyleDeclarationsメソッドによって返されたIEventDispatcherオブジェクトのイベントリスナーをStyleEvent.COMPLETEというように追加して、アプリケーションウィンドウを非表示にしました。 StyleEvent.COMPLETEが発生した後、メインウィンドウが表示されました。

私が今問題にしているのは、数秒間、選択されたスタイルを使用する前に、スタイルなしで白いキャンバスとすべてのコンポーネントを見ることができます。私のアプローチが正しいかどうかを知りたいのですが、これを正しく実装するために何か変更を加える必要がありますか?

答えて

1

申し訳ありませんが、私は自分自身を考え出したようです。このlinkの助けを借りても。

以前私はapplicationCompleteの設定を読み、スタイルをロードしました。だから私はすべてのUIコンポーネントが作成され、表示リストに追加されたと思います。彼らはどんなスタイルの価値もなく裸であった。

設定ファイルの読み込みをpreinitializeに変更したので、applicationCompleteがトリガーされるまでに、AIRは既にSWFスタイルシートを読み込んでいます。それで、私が望むようにUIを表示します。

+0

+1良いもの、初期化するとおそらくはうまくいくでしょう。 – Ryan

+0

'preinitialize'と' initialize'で書くことの違いを教えてください。私は今まで 'creationComplete'と' applicationComplete'しか使用していませんでした。 – midhunhk

+0

オフハンド:コン​​テナ/オブジェクトのすべての子が作成されているわけではないので、事前初期化は使用しません。変数の設定には常に「初期化」を使用し、dataProviderコレクションにはデータを提供します(Adobeが推奨するように)。すべてのコンテナの子がこの時点で作成されています。私たちのイベントリスナーはすべて、creationComplete(アドビ推奨どおり)に設定されます。これは、すべての子と子の子が作成されて表示された後に起動されます。 – Ryan

関連する問題