У меня есть класс ActionScript под названием Dimension, который позволяет клиенту указывать размер, используя значение и такие единицы измерения, как «CM» или «Inches». Я хочу использовать экземпляр этого класса как свойство в MXML, чтобы пользователь мог написать
<DimensionView value = "2cm"/>
Как сделать "2 см" допустимым строковым значением для параметра "Размер"? Я предполагаю, что мне нужно написать метод синтаксического анализатора для моего класса Dimension, но я не могу понять, какой интерфейс я должен реализовать для обеспечения этой функциональности.
Кто-нибудь может помочь?





Один из вариантов - просто ввести свойство 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--
}