4.9.在一个搜索域中高亮显示用户输入

4.9.1. 问题
我想创建这样一个TextArea,一个用户在TextInput 中输入的文本可以在这个TextArea 被搜索到同时高亮显示搜索到的内容。
4.9.2. 解决办法
使用flash.text.TextField 对象并设置它的alwaysShowSelection 属性为true。然后用setSelection方法来设置被选文字的起始索引和长度。
4.9.3. 讨论
mx.controls.TextArea 组件需要将焦点聚在它的身上来显示文本的选择。要做到这个,你可以创建一个TextArea 组件的子类,这样你就可以访问TextArea 包含的flash.text.TextField:
+展开
-ActionScript
public function createComp():void{
textField.alwaysShowSelection = true;
}

把alwayShowSelection 属性设置为true 意味着不管是否在焦点上,TextField 都会显示选择了的文本。现在每当setSelection 方法被调用时,TextArea 组件中的TextField 都会显示,同时TextArea 的滑动条会自动滚动到正确的位置来显示选择的文本。
+展开
-XML
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxmlwidth="1000height="800"
xmlns:cookbook="oreilly.cookbook.*">

<mx:Script>
<![CDATA[
[Bindable]
private var text_string:String = "Aenean quis nunc id purus pharetra haretra. Cras a felis sit amet ipsum ornare luctus. Nullam scelerisque" +
" placerat velit. Pellentesque ut arcu congue risus facilisis pellentesque. Duis in enim. Mauris eget est. Quisque tortor. ";
private function searchText():void
{
var index:int = masterText.text.indexOf(input.text);
masterText.verticalScrollPosition = 0;
if(index != -1)
{
masterText.setSelection(index,
index+input.text.length);
}
}

]]>
</mx:Script>
<mx:TextInput id="inputchange="searchText()"/>
<cookbook:SpecialTextArea editable="falseid="masterText"
text="{text_string}fontSize="20width="600height="200"
x="200"/>

</mx:Canvas>

加支付宝好友偷能量挖...


评论(0)网络
阅读(103)喜欢(0)flash/flex/fcs/AIR