Flex 4 TextArea中的UITextField等价物

时间:2011-04-15 20:15:57

标签: actionscript-3 flex flex4 flex3

我有一些flex3代码,它使用TextArea从char索引中选择一行:

var tf:IUITextField=ta.mx_internal::getTextField();
var lineIndex:int= tf.getLineIndexOfChar(someCharIndex);
var lineCharIndex:int= tf.getLineOffset(lineIndex);
var lineLength:int= tf.getLineLength(lineIndex);
ta.setSelection(lineCharIndex, lineCharIndex+lineLength);

我想将它升级到flex4的TextArea,但我不确定IUITextField方法的flex4等价物是什么(getLineIndexOfChar,getLineOffset,getLineLength)。

有人可以指点我这些方法的文档吗?

1 个答案:

答案 0 :(得分:1)

这是一个简单的应用程序,它说明了如何使用TLF及其TextArea选择带有Spark TextFlow的文本行:

<?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" creationComplete="init()">
    <fx:Script>
    <![CDATA[
        import flashx.textLayout.compose.TextFlowLine;
        import flashx.textLayout.elements.TextFlow;
        import flashx.textLayout.events.SelectionEvent;

        private function init():void
        {
            var textFlow:TextFlow = ta.textFlow;
            textFlow.addEventListener(SelectionEvent.SELECTION_CHANGE, textFlow_selectionChangeHandler);
        }

        private function textFlow_selectionChangeHandler(event:SelectionEvent):void
        {
            // Just getting char index
            var selectionStart:int = event.selectionState.absoluteStart;
            var textFlow:TextFlow = ta.textFlow;
            var line:TextFlowLine = textFlow.flowComposer.findLineAtPosition(selectionStart);
            ta.selectRange(line.absoluteStart, line.absoluteStart + line.textLength);
        }
    ]]>
    </fx:Script>
    <s:TextArea width="400" height="200" verticalCenter="0" horizontalCenter="0" id="ta">
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor 
        incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco 
        laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate 
        velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, 
        sunt in culpa qui officia deserunt mollit anim id est laborum.      
    </s:TextArea>
</s:Application>

您需要的所有内容都位于textFlow_selectionChangeHandler()方法中。确定了字符位置后,我们为此位置提取TextFlowLine,然后选择它。要测试此代码,只需点击TextArea中的某个位置。

希望这有帮助!