Apache flex 从隐藏组件生成flex图像

Apache flex 从隐藏组件生成flex图像,apache-flex,flex4,capture,Apache Flex,Flex4,Capture,我试图把一个图像,从一些文本生成,放在一个文件夹中。因为它是一个样式化的文本,所以我考虑将它放在另一个RichEditableText中,对它进行样式化,然后将它打印到一个文件中,作为InlineGraphicsElement的源 我使用下面的代码来实现这一点 var txt:RichEditableText = new RichEditableText(); txt.text = name; // Appliy given styles to the text flow of input ri

我试图把一个图像,从一些文本生成,放在一个文件夹中。因为它是一个样式化的文本,所以我考虑将它放在另一个RichEditableText中,对它进行样式化,然后将它打印到一个文件中,作为InlineGraphicsElement的源

我使用下面的代码来实现这一点

var txt:RichEditableText = new RichEditableText();
txt.text = name;
// Appliy given styles to the text flow of input rich editable text
createApplyNamedStyle(name, styles).call(null, txt.textFlow);
var bitmapData:BitmapData = new BitmapData(txt.width, txt.height);
bitmapData.draw(txt);
var bitmap:Bitmap = new Bitmap(bitmapData);
不幸的是,调用时,它显示一个错误堆栈

ArgumentError: Error #2015: BitmapData non valide.
at flash.display::BitmapData()
at RichTextEditor/getTagImage()[E:\FlexWorkspace\Test\src\RichTextEditor.mxml:74]
at RichTextEditor/insertTag()[E:\FlexWorkspace\Test\src\RichTextEditor.mxml:154]
我怀疑这是因为我的RichEditableText不在可见组件中,没有布局。 我如何确保它被正确地布置


将文本转换为图像是否正确?

您应该跟踪txt.width和txt.height。它们必须至少大于或等于1。显示对象是否可见并不重要。

你说得对;由于文本不在显示列表中,因此它永远不会被验证,因此高度和宽度为0


典型的解决方法是将项目添加到显示列表中,然后立即将其删除。在.

的调试器中,我可以告诉您宽度和高度都是
0
,这就是无法创建位图数据的原因。在我以前的Java世界中,我会调用pack()(或类似的东西)来强制组件布局。但在这里,它似乎并不存在。那么,如何使我的组件可绘制呢?请注意,对于Flex 4,上述解决方案必须稍作修改:Application.Application已被FlexGlobals取代。topLevelApplication和addChild已被弃用,取而代之的是addElement。不管怎样,你的回答给了我所有我需要的答案。谢谢。