Разрешить настраиваемое текстовое представление данных в MXML - PullRequest
0 голосов
/ 01 декабря 2008

У меня есть класс actionscript под названием Dimension, который позволяет клиенту указывать измерение, используя значение и единицу измерения, например «CM» или «Inches». Я хочу использовать экземпляр этого класса в качестве свойства в MXML, чтобы пользователь мог написать

<DimensionView value="2cm"/>

Как сделать "2cm" допустимым строковым значением для Dimension? Я предполагаю, что мне нужно написать метод синтаксического анализа в моем классе Dimension, но я не могу понять, какой интерфейс я должен реализовывать, чтобы обеспечить эту функциональность.

Может кто-нибудь помочь?

1 Ответ

1 голос
/ 01 декабря 2008

Один из вариантов - просто набрать value свойство как String, написать для него геттер и сеттер и выполнить его разбор:

/**
* docs here
*/
[Bindable(event="valueChanged")]
public function get value():String
{
    return _valueInt.toString();
}
/**
* @private
*/
public function set value(aVal:String):void
{
    // parse the aVal String to an int (or whatever) here
    _valueInt = parsed_aVal;
    dispatchEvent(new Event("valueChanged"));
}

В связанном примечании компоненты инфраструктуры реализуют функцию, позволяющую использовать знаки процента в некоторых свойствах размеров при назначении в MXML, используя поле недокументированных метаданных, называемое PercentProxy. Ниже приведен пример получения и установки свойства width из mx.core.UIComponent:

[Bindable("widthChanged")]
[Inspectable(category="General")]
[PercentProxy("percentWidth")]
override public function get width():Number
{
    // --snip snip--
}
override public function set width(value:Number):void
{
    // --snip snip--
}
...