2013-09-26 58 views

回答

1

您可以使用.getCharBoundaries(),它返回一個Rectangle,它包含TextField中給定索引處的字符。

使用該矩形,您可以創建一些高光圖形。這裏,將簡化這個過程的函數:

function highlightChar(textField:TextField, charIndex:int):void 
{ 
    var rect:Rectangle = textField.getCharBoundaries(charIndex); 
    var box:Shape = new Shape(); 

    box.blendMode = BlendMode.MULTIPLY; 
    box.graphics.beginFill(0xFFCC33); 
    box.graphics.drawRect(textField.x + rect.x, textField.y + rect.y, rect.width, rect.height); 
    box.graphics.endFill(); 

    if(textField.parent) textField.parent.addChild(box); 
} 

從這裏,你可以創建另一個函數,將接受一個短語來強調:

function highlightPhrase(textField:TextField, phrase:String):void 
{ 
    var start:int = textField.text.indexOf(phrase); 

    if(start >= 0) 
    { 
     for(var i:int = start; i < phrase.length; i++) 
     { 
      highlightChar(textField, i); 
     } 
    } 
} 

組合,你會很容易找到突出一個這樣的文本塊:

var t:TextField = new TextField(); 
t.text = "This text is highlighted"; 
addChild(t); 

highlightPhrase(t, "This text");