0

Spark Group コンテナがありますが、そのサブコンポーネントはすべて MX コンポーネントです。コンテナーの初期化時に、MX コンポーネントでいくつかの操作を実行する必要があります。関数に操作を入れようとしましたcommitPropertiesが、サブコンポーネントはまだ null です。それらを関数に移動しようとしましたchildrenCreatedが、まだ null です。コンポーネントを操作するためにどの関数を使用できますか? ありがとう。

protected override function commitProperties():void
        {
            var defaultFinishedDate:Date=new Date();
            defaultFinishedDate.date--;
            includeFinishedDateSelector.selectedDate=defaultFinishedDate;
        }

このincludeFinishDateSelector関数では null であるため、実行時エラーが発生します。次のように定義されています。

<mx:DateField id="includeFinishedDateSelector" formatString="{GeneralUtils.DATE_FORMAT_STRING}" 
    enabled="{includeFinishedCheckBox.selected}" width="18%"/>

そして、私が言ったように、そのコンテナーは spark Group コンテナーです。

4

3 に答える 3

0

助けようとした人に感謝します。最終的に、MX コンポーネントの直接のコンテナー (親) を spark コンテナーに変更することでこれを解決しました (元々は spark コンテナー内の MX コンテナーでした)。

于 2013-08-20T07:23:24.543 に答える
0

コードを callLater でラップすることもできます。基本的に、次のパスで実行するためにキューに入れられます。したがって、作成完了で次のことを試してください。

callLater(function():*{
    var defaultFinishedDate:Date=new Date();
    defaultFinishedDate.date--;
    includeFinishedDateSelector.selectedDate=defaultFinishedDate;
});

あまりエレガントではありませんが、うまくいくはずです。

于 2013-08-15T14:14:40.490 に答える
0

createChildren()Flex ライフ サイクル メソッドは、操作を実行できる場所であると予想していました。ただし、スーパークラスが実行された後にのみ、この作業を行いたいと思うでしょうcreateChildren():

override protected function createChildren():void
{
    super.createChildren();
    // now do your thing
}

もう 1 つのことは、commitProperties()上に示したメソッドでは、スーパー クラス メソッドを呼び出していないことです。それは大したことではありません。このcommitProperties()メソッドは、Flex フレームワーク AFTER によって呼び出されcreateChildren()ます。したがって、理論的には、 でのアプローチは機能するcommitProperties()はずです。戻ってsuper.commitProperties()、そのコードに を呼び出して、もう一度試してみてください。

最後に、これがうまくいかない場合は、Flex が MXML コンテナで子オブジェクトをインスタンス化する方法が原因である可能性があります。したがって、確実に機能するアプローチは、Groupコンテナーからの Flex ライフサイクル イベントをリッスンすることです。によってcreationCompleteイベントがディスパッチされるとGroup、すべての子が存在することが保証されます。

于 2013-08-04T17:55:29.973 に答える