2

uicomponentをmxmlカスタムコンポーネントに渡す方法は?
例:ボタンをいくつでも渡したいのですが、カスタムコンポーネントで特定の順序でボタンを配置したいと思います。

MainApp.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
           xmlns:s="library://ns.adobe.com/flex/spark"
           xmlns:mx="library://ns.adobe.com/flex/mx"
           minWidth="955" minHeight="600" xmlns:local="*"
           >

<local:myComp >
   <s:Button label='Button1' />
   <s:Button label='Button2' />
   <!--I want to add anything else here -->
</local:myComp>

myComp.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
     xmlns:s="library://ns.adobe.com/flex/spark"
     xmlns:mx="library://ns.adobe.com/flex/mx"
     creationComplete="init()"
     width="400" height="300"
     >


<fx:Script>
    <![CDATA[
        private function init():void {
        // how do I access the added components and place them where I want?
        // do I use removeChildren and AddChildren?
        // addItemsHere.addchild(nextButton);
    ]]>
</fx:Script>

<s:HGroup id='addItemsHere' />

4

2 に答える 2

1

あなたのコンポーネントが extends としてGroup、あなたはaddElement代わりにaddChild(そして、名前に「子」を含む他のすべてのメソッドのために、それは「要素」に置き換えられるべきです。したがって、すべての要素へのアクセスは次のようになります:

for(var i:int =0; i < numElements; i++){
   var button:Button = Button(getElementAt(i));
   doWhatIWantWithMyButton(button);
}

createChildren作成時に追加するものがわかっている場合は、コンポーネントのメソッドをオーバーライドすることもお勧めします。

特定のボタン配置が必要ない場合layoutは、コンポーネントのプロパティを任意のレイアウト (たとえば、VerticalLayout など) に設定できます。これらのレイアウトは調整可能です。

于 2012-12-21T19:21:10.227 に答える