如何扩展不是容器的Flex组件(例如RadioButton)?

时间:2009-07-21 19:48:50

标签: flex actionscript-3 flex3

我想在Flex 3中扩展RadioButton组件,向其添加文本输入行来代替标签。有可能这样做吗?

或者,是否可以让容器(例如HBox)将所有属性委托给内部组件(例如RadioButton),以便我可以创建一个“就像'收音机'的复合组件按钮?

1 个答案:

答案 0 :(得分:3)

如果你在一个Actionscript类中扩展RadioButton类,(而不是一个mxml文件 - 有更好的方式吗?),你应该能够添加一个文本输入,即:

package components
{
    import mx.controls.RadioButton;

    public class Test extends RadioButton
    {
        public function Test()
        {
            super();
        }

    }
}

您可能会发现这个 - http://www.adobe.com/devnet/flex/quickstart/building_components_in_as/的帮助,尤其是标题为创建复合动作脚本组件的部分。如果这是你的第一个自定义组件,你也可能想要阅读Flex组件生命周期(http://weblog.mrinalwadhwa.com/2009/02/17/understanding-the-flex-component-lifecycle/ - 虽然我永远找不到那个东西的好链接)。 flex组件的生命周期有点复杂,你需要确保理解它,这样你的组件就不会不必要地重新绘制内容。

你想在create children函数中添加textInput,textField本身是在Button的(即RadioButton子类)createChildren()方法中创建的。

/**
 *  @private
 */
override protected function createChildren():void
{
    super.createChildren();

    // Create a UITextField to display the label.
    if (!textField)
    {
        textField = IUITextField(createInFontContext(UITextField));
        textField.styleName = this;
        addChild(DisplayObject(textField));
    }

}