Flex 4.1 RichText / RichEditableText с автоматическим изменением размера - PullRequest
1 голос
/ 21 марта 2011

Раньше я использовал объект 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.

I'mпытаясь найти компонент TLF, который позволяет мне сделать это.

Я пытался использовать mc.core.FTETextField.Размеры велики, но не поддерживают HTML

Я пытался использовать Spark TextArea, но, видимо, метод установки heightByLines = NAN больше не работает.

Я видел, как кто-то сказал использовать RichEditableText,потому что он поддерживает автоматическое изменение размера, но я не могу понять, как.

Это для статического текста.Не для динамического или входного текста.

Я кодирую это, поэтому, если у вас есть предложения, пожалуйста, публикуйте их в коде, а не в MXML.

Спасибо за ответы, но UITextfieldне является компонентом TLF, и пример для RichText не приводит к росту высоты RichText с текстом.

Мне нужен компонент, который я могу установить ширину, добавить форматированный текст TLF и получить высоту компонента после его рендеринга.Так же, как TextField делает, когда вы добавляете текст.

lee

Ответы [ 3 ]

1 голос
/ 21 марта 2011

Достаточно просто, вам просто нужно создать объект 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)}"/>
0 голосов
/ 28 марта 2011

RichEditableText делает свое дело, однако вы должны явно установить свойство ширины для автоматического переноса. По моему опыту, если вы установите ширину в% 100, это может вызвать некоторые проблемы (для меня это вызывает некоторые), поэтому я рекомендую вам явно установить значение ширины, чтобы обеспечить перенос слов. ASDoc RichEditableText объясняет довольно много.

0 голосов
/ 21 марта 2011

Вы можете использовать mx.core.UITextField.Поддерживает HTML.Вот документация: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/UITextField.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...