IUITextField эквиваленты в flex4 TextArea - PullRequest
0 голосов
/ 16 апреля 2011

У меня есть некоторый код flex3, который использует TextArea для выбора строки из индекса символа:

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

Я хотел бы обновить его до TextArea flex4, но я не уверен, что такое flex4эквивалентами методов IUITextField являются (getLineIndexOfChar, getLineOffset, getLineLength).

Может кто-нибудь указать мне документы для этих методов?

1 Ответ

1 голос
/ 16 апреля 2011

Вот простое приложение, которое иллюстрирует, как выбрать текстовую строку с помощью Spark TextArea, используя TLF и его 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.

Надеюсь, это поможет!

...