それよりもはるかに簡単です。このユースケースでは、単に拡張する必要がありますGroup
。また、作業を簡単にするために、作成したコンポーネントをMXMLで記述します。
新しいファイルMyBlock.mxml
(たとえば、com/mydomain/components
)を作成し、次のコードを追加します。
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<s:TextInput .. />
<s:BitmapImage .. />
</s:Group>
ここで、このコンポーネントを使用するだけです。
<c:MyBlock />
ここで、c
名前空間はxmlns:c="com.mydomain.components.*"
、このクラスを使用してドキュメントのルートノードで定義されます。例えば:
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:c="com.mydomain.components.*">
<c:MyBlock />
</s:Application>
ここで、ブロックごとに異なるテキストが必要だとすると、プロパティを公開する必要があります。これを行うには、label
プロパティをMyBlock
次のように追加します。
<fx:Declarations>
<fx:String id="label" />
</fx:Declarations>
変数が変更されるたびにその変数の内容を表示するにはTextInput
、次のようにバインディングを使用します。
<s:TextInput text="{label}" />
最終的なコンポーネントは次のようになります。
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Declarations>
<fx:String id="label" />
</fx:Declarations>
<s:TextInput text="{label}" .. />
<s:BitmapImage .. />
</s:Group>
MyBlock
これで、異なるテキストで複数のインスタンスを作成できます。
<c:MyBlock label="hello" />
<c:MyBlock label="world" />
MyBlockの通常の使用がリストのような方法である場合は、何度も使用するのList
ではなく、カスタムItemRendererでコンポーネントを使用することを検討することをお勧めしMyBlock
ます。