如何动态突出显示AS3中的静态文本背景?

时间:2013-09-26 06:58:37

标签: actionscript-3 search text static word

如果我可以在搜索框中搜索该单词会找到静态文本,则突出显示在flash as3中。有什么建议吗?

1 个答案:

答案 0 :(得分: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");