IUITextField-Äquivalente in flex4 TextArea - actionscript-3, flex, flex4, flex3

Ich habe etwas Flex3-Code, der eine TextArea verwendet, um eine Zeile aus einem Char-Index auszuwählen:

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);

Ich möchte dies zu flex4 TextArea, aber ich bin mir nicht sicher, was die Flex4-Äquivalente der IUITextField-Methoden sind (getLineIndexOfChar, getLineOffset, getLineLength).

Kann mich jemand auf einige Dokumente für diese Methoden hinweisen?

Antworten:

1 für die Antwort № 1

Hier ist eine einfache Anwendung, die zeigt, wie man eine Textzeile mit Spark auswählt TextArea Verwenden von TLF und dessen 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>

Alles, was Sie brauchen, befindet sich in textFlow_selectionChangeHandler() Methode. Nach dem Bestimmen der Zeichenposition extrahierten wir TextFlowLine für diese Position und dann ausgewählt. Um diesen Code zu testen, klicken Sie einfach irgendwo in Ihrem TextArea.

Hoffe das hilft!


Am beliebtesten