Используйте TLF, и перед тем, как начать раскрашивать все, вызовите beginCompositeOperation (); и в конце вызов _objEditManager.endCompositeOperation (); Вот пример прямо из моего кода
_objFlow.interactionManager = _objEditManager;
_objEditManager.beginCompositeOperation();
DocColoringUtils.SetRegionColor(_objFlow, iStart, iEnd, BackgroundColor.TRANSPARENT, 1);
var colRegions:Vector.<Region> = _objResourceMediator.GetCurrentResourceRegions();
var objEditingExcerpt:Excerpt = _objExcerptingMediator.EditingExcerpt;
if (_objExcerptingMediator.InEditMode == true && objEditingExcerpt != null)
{
DocColoringUtils.ColorizeForEditMode(_objFlow, iStart, iEnd, colRegions, objEditingExcerpt.StartIndex, objEditingExcerpt.EndIndex, _objExcerptingMediator.SearchMatchRegions);
}
else
{
DocColoringUtils.ColorizeForNonEditMode(_objFlow, iStart, iEnd, colRegions, _objExcerptingMediator.SearchMatchRegions);
}
_objEditManager.endCompositeOperation();
_objFlow.interactionManager = _objSelectionManager;
Наконец, вы должны раскрашивать только то, что находится в видимом диапазоне +/- 300 символов. Затем при прокрутке перекрасить текущий видимый регион. Это работает для какого-то безумно большого документа на http://www.Dedoose.com.