Apache flex ActionScript创建自定义组件以容纳其他两个spark组件

Apache flex ActionScript创建自定义组件以容纳其他两个spark组件,apache-flex,actionscript,custom-component,flex-spark,Apache Flex,Actionscript,Custom Component,Flex Spark,我对ActionScript/Flex相当陌生,所以我不完全确定这是否可行 基本上,我在代码中多次重复以下代码块: <s:TextInput .. \> <s:BitmapImage .. \> 如果可能的话,我完全不知道如何将两个现有组件组合成一个新的自定义组件 我下一步该怎么做?任何帮助都将不胜感激 谢谢,比这简单多了:对于这个用例,您只需扩展组。为了使事情更简单,用MXML编写您的组合组件 创建一个新文件MyBlock.mxml(例如在com/mydomain/c

我对ActionScript/Flex相当陌生,所以我不完全确定这是否可行

基本上,我在代码中多次重复以下代码块:

<s:TextInput .. \>
<s:BitmapImage .. \>
如果可能的话,我完全不知道如何将两个现有组件组合成一个新的自定义组件

我下一步该怎么做?任何帮助都将不胜感激


谢谢,

比这简单多了:对于这个用例,您只需扩展
。为了使事情更简单,用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>

现在假设您想在每个块中有不同的文本,您必须公开一个属性。为此,让我们向
MyBlock
添加
标签
属性:

<fx:Declarations>
    <fx:String id="label" />
</fx:Declarations>
最后一个组件将如下所示:

<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>


注意,如果你经常使用MyBooLs更类似于列表样式,你可能想考虑使用一个自定义的项目渲染器使用<代码>列表>代码>组件,而不是一次又一次地使用<代码> MyBlock < /代码>。

它比这要简单得多:对于这个用例,你应该简单地扩展<代码>组< /C>。为了使事情更简单,用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>

现在假设您想在每个块中有不同的文本,您必须公开一个属性。为此,让我们向
MyBlock
添加
标签
属性:

<fx:Declarations>
    <fx:String id="label" />
</fx:Declarations>
最后一个组件将如下所示:

<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>


注意,如果你经常使用MyBooLs更像列表样式,你可能想考虑使用一个自定义的项目渲染器使用<代码>列表>代码>组件,而不是一次又一次地使用<代码> MyBlock < /代码>。实际上,我想到的是一个布尔属性,因此当属性设置为true时,MyBlock将显示一个图像,另一个图像显示为false。我想我也可以用同样的方法,谢谢!非常感谢!实际上,我想到的是一个布尔属性,因此当属性设置为true时,MyBlock将显示一个图像,另一个图像显示为false。我想我也可以用同样的方法,谢谢!

<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>
<c:MyBlock label="hello" />
<c:MyBlock label="world" />