1

过去,我使用类似这样的 flash.text.textField 对象:

tf = textField();
tf.autoWrap = true
tf.autoSize = "left"
tf.width = 100;
tf.text = "Text that is too long to fit in the textfield, so it autowraps, automatically updating the height."
addChild(tf);
someNewObject = new MovieClip();
someNewObject.y = tf.height + 5;
addchild(someNewObject);

这样做会动态地将我的 someNewObject 放在 textField 的下方。

我正在尝试找到一个允许我执行此操作的 TLF 组件。

我尝试使用 mc.core.FTETextField。它调整大小很好,但不支持 HTML

我尝试使用 Spark TextArea,但显然,设置 heightByLines = NAN 的技术不再有效。

我看到有人说要使用 RichEditableText,因为它支持自动调整大小,但我不知道怎么做。

这适用于静态文本。不适用于动态或输入文本。

我正在对此进行编码,因此如果您有一些建议,请将它们发布在代码中,而不是 MXML 中。

感谢到目前为止的答案,但 UITextfield 不是 TLF 组件,RichText 的示例不会导致 RichText 高度随文本增长。

我需要的是一个组件,我可以设置宽度、添加 TLF 格式的文本并在组件渲染后获取组件的高度。就像添加文本时的 TextField 一样。

4

3 回答 3

1

很简单,您只需要创建 TextFlow 对象。

<fx:Declarations>
<s:TextFlow id="textFlow">
    Hello, this <s:span fontWeight="bold"> is a test</s:span> of TextFlow
</s:TextFlow>
</fx:Declarations>
<s:RichText id="richText" textFlow="{textFlow}" />

但是 textFlow 在那里使用了 Flex 标签。您也可以随时使用转换器将真正的 HTML 字符串转换为 TextFlow,如下所示:

<fx:Script>
    <![CDATA[
        import flashx.textLayout.conversion.ITextImporter;
        import flashx.textLayout.conversion.TextConverter;

        private const importer:ITextImporter = TextConverter.getImporter(TextConverter.TEXT_FIELD_HTML_FORMAT);
        private const htmlString:String = "Hello, this <b>is a test</b> of TextFlow";

    ]]>
</fx:Script>
<s:RichText textFlow="{importer.importToFlow(htmlString)}"/>
于 2011-03-21T19:00:36.287 回答
0

RichEditableText 可以解决问题,但是您必须显式设置宽度属性以进行自动换行。根据我的经验,如果将宽度设置为 %100,可能会导致一些问题(对我来说会导致一些问题),因此我建议您明确设置宽度值以确保自动换行。RichEditableText的ASDoc解释了很多。

于 2011-03-27T22:39:36.360 回答
0

您可以使用mx.core.UITextField. 它支持 HTML。这是文档:http ://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/UITextField.html

于 2011-03-21T06:50:13.187 回答