我是flex的新手,无法捕获文本控件的文本更改事件:
<mx:Text id="description"
text=""
textAlign="center"
fontSize="18"
click="_playSpeech()" />
现在是一个点击,但我需要它像textChange =“_ playSpeech()”所以每次该控件的文本发生变化时都会调用该函数。
非常感谢任何帮助。
答案 0 :(得分:1)
如果您正在观察用户在文本框中输入的更改,则应使用 TextArea或TextInput 类代替 Text 。这允许您收听如下更改:
<?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 :(得分:1)
您需要注册更改事件(请注意我使用的是TextInput而非Text):
<mx:TextInput id="description" text="" fontSize="18" change="_playSpeach()"/>
答案 2 :(得分:1)
在代码中执行此操作的简单方法是将文本更新包装到函数中:
protected function updateDescription(text:String):void
{
description.text=text;
_playSearch();
}
然后始终调用函数而不是立即更改文本字段。还可以防止不必要的事件使用。