2011-12-14 18 views
0

私はいくつかのコンポーネントを持つビュースタックを持っています。 これらのコンポーネントは、他のコンポーネントからのパラメータで関数を実行する必要があります。 したがって、他のコンポーネントで直接ロードできない場合があります。コンポーネントを含むViewstack;コンポーネントをロードするのを待ちます

AS3経由でコンポーネントをロードする方法はありますか?

ありがとうございます!

答えて

1

は、実行時に子コンポーネントを追加する方法の詳細をeterps。すべてが起動 でインスタンス化されている - - コンポーネントが

  • creationPolicy=allを使用するインスタンス化されるとき、エンジンが決定

    • 使用creationPolicy=auto:あなたはMXMLで、あなたの子コンポーネントを指定した場合は、作成するためのいくつかのオプションを持っています
    • creationPolicy=autoまたはnoneを使用しますが、必要に応じて手動でインスタンス化します。参照:creating deferred components

    autoはあなたのために働いていないので、私はallを試してみました。そのインスタンス化があまりにも早すぎる場合にのみ、遅延コンポーネントを調べます。

  • 0

    任意のMXMLコンポーネントは、AS3経由でインスタンス化できます。 creationCompleteイベントを使用すると、コンポーネントを作成して表示リストに追加するメソッドを呼び出すことができます。以下の例を参照してください。ボタンとHGroupがAS3に作成され、ボタンがHGroupの子になり、Hgroupがパネルの子になります。上記

    <s:Panel creationComplete="createButtonComponent(event)"> 
        <fx:Script> 
        <![CDATA[ 
         import mx.collections.ArrayCollection; 
         import mx.controls.Button; 
         import mx.events.FlexEvent; 
    
         import spark.components.HGroup; 
    
    
         protected function buttonClickHandler(event:MouseEvent):void 
         { 
          // Do something 
         } 
    
         protected function createButtonComponent(event:FlexEvent):void 
         { 
          var group:HGroup = new HGroup(); 
          group.percentHeight = 20; 
          group.percentWidth = 100; 
    
          var myButton:Button = new Button(); 
          myButton.label = 'My Button'; 
          myButton.addEventListener(MouseEvent.CLICK, buttonClickHandler); 
    
          group.addElement(myButton); 
          this.addElement(group); 
         } 
    
        ]]> 
        </fx:Script> 
        </s:Panel> 
    

    このコードは、次のMXMLのようになります。

    <s:Panel creationComplete="createButtonComponent(event)"> 
        <s:HGroup id="group" height="20%" width="100%"> 
        <mx:Button id="myButton" label="My Button" click="buttonClickHandler" /> 
        </s:HGroup> 
    </s:Panel> 
    
    関連する問題