Flex 4 - выделение ключевых слов в блоке текста с использованием TextLine - PullRequest
0 голосов
/ 30 мая 2010

У меня есть страница поиска и результатов, на которой я бы хотел выделить ключевые слова в тексте результатов.Было предложено, чтобы я использовал TextLine для этого, но у меня есть проблемы с выяснением, как заставить это работать.Я запустил простое, скомпилируемое фиктивное приложение и надеялся, что кто-нибудь может дать мне несколько советов о том, как продолжить:

Ответы [ 2 ]

1 голос
/ 01 июня 2010

Спасибо, Треур, но я нашел еще лучший способ: setFormatOfRange ()

Эта функция в основном изменяет формат (фон / передний план) диапазона символов в компоненте RichEditableText. Так что все, что мне нужно сделать, это:

var highlightFormat:TextLayoutFormat = new TextLayoutFormat();
highlightFormat.backgroundColor = 0xffee66;

var keywordsArray:Array = model.keywords.toLowerCase().split(' ');
var indexOfKeyword:int = 0;
for each (var currentKeyword:String in keywordsArray) {
    while((indexOfKeyword = this.text.toLowerCase().indexOf(currentKeyword, indexOfKeyword)) >= 0) {                
        this.setFormatOfRange(highlightFormat, indexOfKeyword, indexOfKeyword + currentKeyword.length);
        indexOfKeyword++;
    }
}

Clean.

0 голосов
/ 31 мая 2010

Вы можете разместить простые html-теги вокруг ключевых слов и отображать текст с помощью компонента RichText вместо компонента TextLine.

См. http://blog.flexexamples.com/2009/10/06/displaying-html-formatted-text-in-a-spark-richtext-control-in-flex-4/ для получения дополнительной информации о html в flex.

Кроме того, для поиска слов, которые должны быть выделены в строке, используйте метод String.replace: http://livedocs.adobe.com/flex/3/langref/String.html#replace()

...