Flash Ripper RSS Readers

+

14.Май.2006

Мой первый MXML-компонент

Во Flex их существует два вида: mxml и actionscript компоненты. Второй вид хорошо знаком флэш-программистам, -- но зачем нужен первый? Хотя бы потому, что создавать mxml-компоненты в разы легче. А сама целесообразность их создания возникает, как правило, когда разрабатываемый компонент расширяет возможности уже существующих компонентов, и как правило визуальных.

Постановка задачи -- классическая: сделать текстовое поле для ввода, содержащее пригласительный текст, при клике по которому текст-приглашение автоматически выделялся бы для удобства пользователя, чтобы можно было сразу начинать ввод текста требуемого.

Для достижения требуемого эффекта я решил создать компонент TextInputAutoSelected, расширяющий стандартный flex-компонент TextInput путем добавления к нему обработчика события focusIn. Функция-обработчик при этом вписана в исходный код самого компонента и занимается выделением текста в поле ввода:

<?xml version="1.0"?>
<!-- TextInputAutoSelected.mxml -->
<mx:TextInput text="Enter text here" focusIn="handleFocusIn(event);" xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
private function handleFocusIn(event:Event):void {
var ti:TextInputAutoSelected=TextInputAutoSelected(event.currentTarget);
ti.setSelection(0,ti.text.length);
}
]]>
</mx:Script>
</mx:TextInput>

Вот пример его использования:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:component="components.*">
<component:TextInputAutoSelected />
<component:TextInputAutoSelected text="Or here" />
</mx:Application>

Как mxml, так и actionscript-компоненты определяют новые классы. И в том, и в другом случае имя класса совпадает с именем файла компонента. Почти все, что можно сделать в as, можно сделать и в mxml, а простые компоненты лучше в нем и делать. Есть специальная страница официальной документации, которая поможет решить, какой именно метод выбрать: принятие решения о создании компонента в MXML или в ActionScript.

Posted by: Rost at 04:28 PM | Comments (0)


++