/ / Wie man das Textänderungsereignis eines Textsteuerelements erfasst, um eine Funktion in Flex 3 aufzurufen - flex, events

Wie man das Textänderungsereignis eines Textsteuerelements festlegt, um eine Funktion in Flex 3 - flex, events aufzurufen

Ich bin sehr neu im Flex-Modus und habe Probleme beim Erfassen des Textänderungsereignisses meines Textsteuerelements:

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

Im Moment ist es ein Klick, aber ich brauche etwas wie textChange = "_ playSpeech ()", damit es diese Funktion jedes Mal aufruft, wenn sich der Text des Steuerelements ändert.

Jede Hilfe wird sehr geschätzt.

Antworten:

1 für die Antwort № 1

Wenn Sie Änderungen beobachten, die der Benutzer in das Textfeld selbst eingibt, sollten Sie die Klasse verwenden TextArea oder TextInput Anstatt von Text. Auf diese Weise können Sie Änderungen wie folgt anhören:

<?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>

Wenn Sie den Text außerhalb des Textfelds ändern, empfiehlt es sich, eine bindbare Variable oder eine Funktion zu erstellen, die die gewünschte Aktion auslöst.


1 für die Antwort № 2

Sie möchten sich wie folgt für das Änderungsereignis registrieren (Hinweis, dass ich TextInput und nicht Text verwende):

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

1 für die Antwort № 3

Eine einfache Möglichkeit, dies im Code zu tun, besteht darin, die Textaktualisierung in eine Funktion zu verpacken:

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

und dann immer die Funktion aufrufen, anstatt das Textfeld sofort zu ändern. Verhindert auch die unnötige Verwendung von Ereignissen.