0


3

Flexコンポーネントのライフサイクル、イベントの順序

systenイベントの順序について混乱しています。 本によると、parentcontainerの「childAdd」イベントは、childconianerの「PreInitialize」および「Initialize」イベントのトリガー後にトリガーされる必要がありますが、プログラムによると、そうではないようです。 助けてください。

私が本で見つけたものは以下の通りです:

\コンテナ----------コンポーネント

事前初期化

------------------事前初期化

------------------初期化

childAdd

初期化

------------------ creationComplete

------------------ updateComplete

creationComplete

updateComplete

私が自分で試したことは以下の通りです。 これらは、それぞれのイベントハンドラに出力されたトレースステートメントのo / pです。

アプリケーションで事前初期化する

アプリケーションのCreateChildren

---------------- MyContainerのコンストラクター

childAdd in Application

---------------- MyContainerの事前初期化

---------------- CreateChildren MyContainer

--------------------------------コンストラクタChildContainer

---------------- childMyContainerを追加

------------------------------- ChildContainerをPreInitializeします

------------------------------- CreateChildren ChildContainer

------------------------------- ChildContainerの初期化

---------------- MyContainerの初期化

以下のコードを見つけてください:

        public function handlePreinitializeApp():void {

            trace('Preinitialize in Application');

        }


        override protected function createChildren():void {

            trace( "CreateChildren in Application" );

            super.createChildren();

        }


        public function handleChildAddApp():void{

            trace('childAdd in Application');

        }


        public function handleInitializeApp():void{

            trace('Initialize Application');

        }


        public function handleCreationCompleteApp():void{

            trace('CreateChildren in Application');

        }

        public function handlePreinitializeOuter():void{

            trace('PreInitialize MyContainer');

        }


        public function handleChildAddOuter():void{

            trace('childAdd MyContainer');

        }

        public function handleInitializeOuter():void{

            trace('Initialize MyContainer');



        }

        public function handlePreinitializeInner():void{

            trace('PreInitialize ChildContainer');

        }


        public function handleInitializeInner():void{

            trace('Initialize ChildContainer');

        }

==

前もって感謝します。

4 Answer


2


あなたのコードがどのように構成されているかをトレースステートメントから伝えることは困難であり、あなたの質問について完全に明確ではありませんが、ここで私が頻繁に使用するコンポーネントライフサイクルのイベントの流れを示す素晴らしいチャートです:http:/ /danorlando.com/?p=122役に立てば幸いです。


0


私は指を指すつもりはありませんが、私が言うことは、どこかに混乱があるかもしれないということです。

2つの子イベントを追加するイベントがあることを思い出してください:childAdd、childAdded

1つは、子供のライフサイクルの開始前であり、もう1つは後です。 期待しているイベントを探していることを確認してください。


0


このページを参照すると、ライフサイクルとさまざまなフェーズの使用が明確に指定されています。