AS3 Перейти к определенному слову в многострочном текстовом поле? - PullRequest
1 голос
/ 11 ноября 2011

Я хочу найти слово в текстовом файле, состоящем из нескольких строк, обнаружив, что это не имеет большого значения, но могу ли я прокрутить до этой позиции, например, в блокноте, когда вы нажмете кнопку «Найти», затем она перейдет к этой точке

Я не прошу сделать это для меня, не могли бы вы дать мне совет, где мне искать?

Заранее спасибо

РЕДАКТИРОВАТЬ РЕШЕНИЕ

var textInput:String="String To Search";
txt.text=textInput; // txt is a dynamic textfield

var currentIndex:int = 0;

function search(searchInput) {

    var searchString:String = searchInput.toLowerCase();
    txt.stage.focus = txt;
    var txtForSearch:String = textInput.toLowerCase();

    if(currentIndex == 0){
        var index:int = txtForSearch.indexOf(searchString,currentIndex);
        currentIndex  = index+searchString.length;
    } else {
        index = txtForSearch.indexOf(searchString,currentIndex);
        currentIndex  = index+searchString.length;
    }
    if(index < 0) {
        txt.setSelection(0, 0);
    } else {
        txt.setSelection(index, currentIndex);
    }
}

input.addEventListener(TextEvent.TEXT_INPUT, inputChanged);
function inputChanged (e:TextEvent):void {
    currentIndex = 0;
}

srBtn.addEventListener(MouseEvent.CLICK,doSearch) // srBtn my search button instance
function doSearch(e:Event):void{
    search(input.text); // input is an input textfield ( search query )     
};

Ответы [ 2 ]

1 голос
/ 18 января 2014

Я боролся с этой проблемой в течение нескольких часов.Я получил нулевой прямоугольник и выяснил, что исходный размер текстового поля был меньше, чем расширенный размер, после того как он был автоматически изменен, чтобы вместить больше текста.Я решил проблему, расширив размер textField на сцене так, чтобы он был достаточно большим, чтобы вместить весь динамический текст.

Обычно я не использую анимацию на временной шкале, но это был файл, предоставленный клиентом.

благодаря этой петле, которая помогла мне понять, что происходит:

for(var i:int= 0; i<tf.text.length; i++)
{
var char:String = tf.text.substr(i,1);
trace(i, ": " , (char=="\n"||char=="\r" ?"<CR>":char) ,": ",  tf.getCharBoundaries(i))
}
1 голос
/ 11 ноября 2011

набор TextField.scrollV в соответствии с TextField.getCharBoundaries()

...