0

我正在构建 RichText 控件的内容:

private function buildLabelTextElements():void
        {
            beforeResult=new SpanElement(); 
            beforeResult.color=0x000000; 
            beforeResult.fontWeight=FontWeight.NORMAL;
            searchResult=new SpanElement(); 
            searchResult.color=0x9C0836;
            searchResult.fontWeight=FontWeight.BOLD;
            afterResult=new SpanElement(); 
            afterResult.color=0x000000; 
            afterResult.fontWeight=FontWeight.NORMAL;
            var paragraphElement:ParagraphElement=new ParagraphElement();
            paragraphElement.addChild(beforeResult); 
            paragraphElement.addChild(searchResult);
            paragraphElement.addChild(afterResult);
            var textFlow:TextFlow=labelField.textFlow;
            textFlow.addChild(paragraphElement);
            /*var controller:ContainerController=new ContainerController(
                    labelField);
            textFlow.flowComposer.addController(controller);*/
            textFlow.flowComposer.updateAllControllers();
            //labelField.textFlow=textFlow;
        }

然后在另一个函数中,我正在更改 , 和 中的文本beforeResultsearchResultafterResult由于某种原因,我在控件中获取的文本是空的!我错过了什么?如果它可以帮助找到问题,我可以添加更改文本的代码,但基本上它只是beforeResult.text=...然后labelField.textFlow.flowComposer.updateAllControllers();

谢谢你的帮助。

4

1 回答 1

0

我认为您可能以错误的方式执行此操作。不要尝试使用TextFlow分配给 的现有对象,而是Label创建一个全新的TextFlow对象,然后将其设置在Label. 这是我记得随处可见的模式,而且我知道过去效果很好:

所以而不是:

var textFlow:TextFlow=labelField.textFlow;

做:

var textFlow:TextFlow = new TextFlow();

然后,在填充了TextFlow文本后,将 分配TextFlow给标签:

labelField.textFlow=textFlow;

可能以原始方式进行,但您必须深入研究Label和/或TextFlow类的内部以确定它为什么不起作用。

于 2013-09-24T17:26:37.870 回答