Flexの画面起動時FlexEvent発生順番メモ

基本的なことですが、書いてあるヘルプを見つけられませんでした。

trace()で調べたところ以下の順番でした。

PREINITIALIZE
IMXMLObjectのinitialized()
INITIALIZE
ADD
CREATION_COMPLETE
ADDED_TO_STAGE

注意点
・preinitializeの段階では、まだコンポーネントがid名のプロパティから取れません。nullアクセスとなります。
・initializeまで行って初めてidのプロパティに参照が入ります。
・added to stageまで行かないと、当然のごとくstageプロパティはnullです。stageにフレームレートや描画品質を設定したいときはadded to stage以降です。
・IMXMLObjectを使ってデザインとロジックを切り離した場合、initalized()ではまだid名のプロパティにはアクセスできないのに注意です。
・特定の画面のviewに対し、PREINITIALIZE、INITIALIZE、CREATION_COMPLETEは画面が遷移したとき
必ず発生するわけではありません。メモリ上からインスタンスが消されてなければ新たにnewせずに再利用しますから。それに対し、ADD、ADDED_TO_STAGEは画面遷移で必ず発生します。


stageに追加されるまでは画面には表示されないので、何か設定したいときは、addかcreation completeハンドラでやるのが安全でしょう。
先に発生したイベントでやるほど、何かしらのプロパティがnullになっている危険性が高いですからね。
加えて、creation completeは画面をメモリ上にnewするときに発生するので、こちらではイベントリスナーの設定やクラスのnewなど、インスタンス作成に関する処理を行うのがいいでしょう。
それに対し、addは、listのdataproviderの設定など、viewにmodelを反映する処理を入れるのがいいと思います。