如果我可以在搜索框中搜索一个单词,该单词将找到静态文本,然后高亮显示在 flash as3 中。请问有什么建议吗?
问问题
652 次
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 回答