Zaznaczanie tekstu i manipulowanie nim

Flash Player 9 i nowsze wersje, Adobe AIR 1.0 i nowsze wersje

Możliwe jest zaznaczenie tekstu dynamicznego i wejściowego. Ponieważ we właściwościach i metodach klasy TextField służących do obsługi zaznaczania zakres tekstu poddawany manipulacji definiuje się za pomocą indeksów, możliwe jest programowe zaznaczanie tekstu dynamicznego lub wejściowego, nawet jeśli jego treść nie jest znana.

Uwaga: Jeśli w programie Flash Professional statyczne pole tekstowe zostanie określone jako pole „z możliwością zaznaczania”, zostanie ono wyeksportowane i umieszczone na liście wyświetlania jako zwykłe dynamiczne pole tekstowe.

Zaznaczanie tekstu

Właściwość flash.text.TextField.selectable ma domyślnie wartość true i możliwe jest programowe zaznaczanie tekstu za pomocą metody setSelection() .

Można na przykład zaznaczyć konkretny tekst w polu tekstowym, gdy użytkownik kliknie w polu:

var myTextField:TextField = new TextField(); 
myTextField.text = "No matter where you click on this text field the TEXT IN ALL CAPS is selected."; 
myTextField.autoSize = TextFieldAutoSize.LEFT; 
addChild(myTextField); 
addEventListener(MouseEvent.CLICK, selectText); 
 
function selectText(event:MouseEvent):void 
{ 
    myTextField.setSelection(49, 65); 
}

Podobnie, jeśli tekst w polu tekstowym ma być zaznaczony od razu, gdy pole zostanie wyświetlone po raz pierwszy, należy utworzyć funkcję obsługi zdarzenia wywoływaną w momencie dodania pola do listy wyświetlania.

Przechwytywanie tekstu zaznaczonego przez użytkownika

Właściwości selectionBeginIndex i selectionEndIndex klasy TextField są przeznaczone tylko do odczytu i nie można ich używać do programowego zaznaczania tekstu. Służą one natomiast do przechwytywania tekstu zaznaczonego przez użytkownika. Ponadto w polach tekstu wejściowego można używać właściwości caretIndex .

Poniższy przykładowy kod wyświetla wartości indeksu tekstu zaznaczanego przez użytkownika:

var myTextField:TextField = new TextField(); 
myTextField.text = "Please select the TEXT IN ALL CAPS to see the index values for the first and last letters."; 
myTextField.autoSize = TextFieldAutoSize.LEFT; 
addChild(myTextField); 
addEventListener(MouseEvent.MOUSE_UP, selectText); 
 
function selectText(event:MouseEvent):void 
{ 
    trace("First letter index position: " + myTextField.selectionBeginIndex); 
    trace("Last letter index position: " + myTextField.selectionEndIndex); 
}

Możliwe jest zastosowanie kolekcji właściwości obiektu TextFormat do zaznaczenia w celu zmiany wyglądu tekstu. Więcej informacji na temat stosowania kolekcji właściwości TextFormat do zaznaczonego tekstu zawiera sekcja Formatowanie zakresów tekstu w polu tekstowym .