2011-04-15 51 views
0

我有一个使用文本区域来选择从一个字符的索引行一些flex3代码:IUITextField的等价物在FLEX4文本区

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的文本区,但我不知道IUITextField方法的flex4等价物是什么(getLineIndexOfChar,getLineOffset,getLineLength)。

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

回答

1

下面是一个简单的应用程序,它说明了如何使用TLF及其TextFlow选择星火TextArea文本行:

<?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中的某个地方。

希望这会有所帮助!

+0

像一个魅力工作。谢谢! – paleozogt 2011-04-15 21:29:52

+0

不客气! :) – Constantiner 2011-04-15 21:32:28