taMain.text.indexOf(splitText[i])
всегда найдет первое вхождение слова, например, первое «[NAME]», и установит формат текста для этого первого вхождения, даже если цикл for находится в другом вхождении «[NAME]".
indexOf () принимает второй необязательный параметр, с которого начинается индекс, чтобы вы могли отслеживать, где в тексте вы находитесь, выполнив что-то вроде этого:
var tempFormat:TextFormat = taMain.getTextFormat(taMain.selectionBeginIndex - 1, taMain.selectionEndIndex);
var splitText:Array = taMain.text.split(" ");
var startIndex:Number = 0;
for (var i = 0; i < splitText.length; i++) {
switch (splitText[i]) {
case "[NAME]":
tempFormat.color = (0xff0000);
break;
case "[AGE]":
tempFormat.color = (0x0000ff);
break;
default:
tempFormat.color = (0x000000);
}
taMain.setTextFormat(tempFormat, taMain.text.indexOf(splitText[i], startIndex), taMain.text.indexOf(splitText[i], startIndex) + splitText[i].length );
startIndex = taMain.text.indexOf(splitText[i], startIndex) + splitText[i].length;
}
Но я не думаю, что разбиение на пробелы, как в var splitText:Array = taMain.text.split(" ")
, является хорошим способом поиска слов в общем тексте.Что, если [ВОЗРАСТ] является последним словом строки, с разрывом строки после него, или после [ИМЯ] запятая, как в «Привет [ИМЯ], как дела?»?Код выше пропустит эти случаи.