0

如果我可以在搜索框中搜索一个单词,该单词将找到静态文本,然后高亮显示在 flash as3 中。请问有什么建议吗?

4

1 回答 1

1

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

使用该矩形,您可以创建一些高亮图形。这是一个可以简化该过程的函数:

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");
于 2013-09-26T07:19:09.533 回答