Как расширить компонент Flex, который не является контейнером (например, RadioButton)? - PullRequest
0 голосов
/ 21 июля 2009

Я хочу расширить компонент RadioButton во Flex 3, добавив к нему строку ввода текста вместо метки. Возможно ли это сделать?

Альтернативно, возможно ли, чтобы контейнер - такой как HBox - делегировал все свойства внутреннему компоненту - такому как RadioButton - так, чтобы я мог создать составной компонент, который "действует как" радио кнопка

1 Ответ

3 голосов
/ 22 июля 2009

Если вы расширяете класс RadioButton в классе Actionscript (а не в 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/ справки, особенно раздел, озаглавленный создание составных компонентов ActionScript. Если это ваш первый пользовательский компонент, вы, вероятно, захотите ознакомиться с жизненным циклом компонента Flex (http://weblog.mrinalwadhwa.com/2009/02/17/understanding-the-flex-component-lifecycle/ - хотя я никогда не смогу найти хорошую ссылку для этого материала). Жизненный цикл гибкого компонента немного сложен, и вам нужно убедиться, что вы понимаете его, чтобы ваш компонент не переписывал вещи без необходимости постоянно.

Вы захотите добавить textInput в функцию create children, сам textField создается в методе createChildren () Button (в подклассах RadioButton).

/**
 *  @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));
    }

}
...