如果我可以在搜索框中搜索该单词会找到静态文本,则突出显示在flash as3中。有什么建议吗?
答案 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");