在将元素添加到显示列表之前,我遇到了 TLF 试图查找元素(例如 LinkElement)位置的问题。
我尝试了以下代码:
创建我的文本流:
var textFlow:TextFlow = TextConverter.importToFlow(MY_HTML_STRING, TextConverter.TEXT_FIELD_HTML_FORMAT);
抓住我需要的所有元素:
var lElem:Array = findLinkElement(textFlow, []); private function findLinkElement(group:FlowGroupElement, arr:Array):Array { var childGroups:Array = []; for (var i:int = 0; i < group.numChildren; i++) { var element:FlowElement = group.getChildAt(i); if (element is LinkElement) { arr.push(element as LinkElement); } else if (element is FlowGroupElement) { childGroups.push(element); } } for (i = 0; i < childGroups.length; i++) { var childGroup:FlowGroupElement = childGroups[i]; findLinkElement(childGroup, arr); } return arr; }
对于找到的每个元素,尝试获取边界:
for each (var le:LinkElement in lElem){ var abs:int = le.getAbsoluteStart(); var tl:TextLine = le.getTextFlow().flowComposer.getLineAt(abs).getTextLine(true); var rect:Rectangle = tl.getAtomBounds(tl.getAtomIndexAtCharIndex(abs)); }
似乎我无法检索 Textline,因为 flowComposer 为空。
知道如何获得界限/为什么作曲家总是为空?