/ / Як зафіксувати подію зміни тексту текстового елемента керування для виклику функції у Flex 3 - flex, події

Як розгортати подію зміни тексту для керування текстом, щоб викликати функцію в Flex 3 - flex, events

Я дуже новачок у гнучкості і маю проблеми із захопленням події зміни тексту мого текстового елемента керування:

<mx:Text id="description"
text=""
textAlign="center"
fontSize="18"
click="_playSpeech()"   />

це клацання прямо зараз, але мені потрібно, щоб це було щось на зразок textChange = "_ playSpeech ()", тому він викликає цю функцію щоразу, коли змінюється текст цього елемента керування.

Будь-яка допомога високо цінується.

Відповіді:

1 для відповіді № 1

Якщо ви спостерігаєте за змінами, які користувач вводить у самому текстовому полі, вам слід використовувати клас TextArea або TextInput замість Текст. Це дозволяє прослуховувати такі зміни:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[


protected function onTextChangeHandler(event:Event):void
{
trace("text has changed")
}

]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>


<mx:TextArea id="description"
text="text to change goes here ..."
textAlign="center"
fontSize="18"
change="onTextChangeHandler(event)"   />

</s:Application>

Якщо ви змінюєте текст поза текстовим полем, я рекомендую вам створити прив'язувану змінну або функцію, яка ініціює дію, яку ви хочете здійснити.


1 для відповіді № 2

Ви захочете зареєструватися у події зміни приблизно так (Зверніть увагу, я використовую TextInput, а не Text):

<mx:TextInput id="description" text="" fontSize="18" change="_playSpeach()"/>

1 для відповіді № 3

Найпростіший спосіб зробити це в коді - обернути оновлення тексту у функцію:

        protected function updateDescription(text:String):void
{
description.text=text;
_playSearch();
}

а потім завжди викликати функцію замість того, щоб негайно змінювати текстове поле. Також запобігає непотрібне використання подій.