加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex学习笔记 富文本编辑(一)-RichEditableText

发布时间:2020-12-15 04:49:55 所属栏目:百科 来源:网络整理
导读:RichEditableText 为低级的 UIComponent,用于显示、滚动、选择和编辑各种格式的文本。 富文本可以包含可单击的超链接以及可嵌入或从 URL 加载的内嵌图形。 RichEditableText 不包含滚动条,但是可以实现用于以编程方式滚动的 IViewport 接口,这样可以由确

RichEditableText 为低级的 UIComponent,用于显示、滚动、选择和编辑各种格式的文本。

富文本可以包含可单击的超链接以及可嵌入或从 URL 加载的内嵌图形。

RichEditableText 不包含滚动条,但是可以实现用于以编程方式滚动的 IViewport 接口,这样可以由确实能够提供滚动条的 Scroller 控制。它还支持使用鼠标滚轮垂直滚动。

它不包括用于更改文本格式的任何用户界面。但是,它提供了可以通过编程方式执行此操作的 API;例如,这些 API 可以创建使所选文本变成粗体的 Bold 按钮。

该类用于 Spark 版本的 TextInput 和 TextArea 的外观。(TextInput 不显示处理富文本的功能,但 TextArea 可以。)默认情况下,RichEditableText 具有透明背景,但不支持绘制边框。

RichEditableText 使用 Text Layout Framework (TLF) 库,而该库又基于 Flash Player 10 中的 Flash 文本引擎 (FTE) 新版本。组合后,可以在这些层上使用高质量的国际印刷效果和布局编辑文本。

Spark 体系结构提供三个文本“原型”- Label、RichText 和 RichEditableText。Label 运行速度最快且占用内存最少,因为它仅使用 FTE,没有 TLF,但其功能有限:无富文本、不可滚动、不可选择、不可编辑。RichText 新增了使用复杂布局显示富文本的功能,但仍然完全是非交互式的。RichEditableText 占用内存最多,但是提供 TLF 可以执行的大部分功能。一般来说,请使用能够满足需求的最快速的文本原型。

RichEditableText 与用于 MX 组件的 UITextField 类相似。该类不使用 FTE 或 TLF,而是扩展了旧版 TextField 类。

UITextField 与 RichEditableText 之间最重要的区别在于:

  • RichEditableText 可提供更佳的印刷效果和文本布局,且能更好地支持各国语言。
  • RichEditableText 包含面向对象模型的富文本,而 UITextField 不包含。
  • 在显示大量文本时,RichEditableText 性能表现得更好。
  • RichEditableText 嵌入字体的方式与 UITextField 不同。嵌入字体时,请有关有关如何使用 embedAsCFF 属性的文档。

?

RichEditableText 使用 TLF 面向对象模型的富文本,其中,诸如分段、段落、范围、超链接和图像等文本布局元素在运行时由 ActionScript 对象表示,可以通过编程方式访问和操纵该对象。TLF 中用于表示富文本的中心对象是 TextFlow,因此可以通过将要显示的 RichEditableText 控件的 textFlow 属性设置为 TextFlow 实例,来指定其富文本。有关如何创建 TextFlow(如通过导入 TLF 标记)的信息,请参阅 textFlow 属性的描述。如果不需要显示含有多种格式的文本,可使用 text 属性设置“纯文本”字符串。有关 text 属性和 textFlow 属性如何进行交互(例如,可以设置一个属性,然后获取另一个属性)的信息,请参阅这两个属性的描述。

编译时,可以将 TLF 标记标签放在 RichEditableText 标签内,如下例所示:

  <s:RichEditableText>Hello <s:span fontWeight="bold">World!</s:span></s:RichEditableText>
  

在此示例中,MXML 编译器设置了 content 属性,从而导致基于所指定的 FlowElement 自动创建 TextFlow。

?

默认文本格式由 CSS 样式确定,例如 fontFamilyfontSize。TextFlow 中的任何格式信息都会覆盖 CSS 样式确定的默认格式。

使用 lineHeight 样式可以控制行间距;使用 paragraphSpaceBeforeparagraphSpaceAfter 样式可以控制段间距。可以使用 textAligntextAlignLast 样式将文本对齐或两端对齐。可以使用 paddingLeftpaddingToppaddingRightpaddingBottom 样式从组件边缘插入文本。

默认情况下,RichEditableText“自动调整大小”:最初不包含任何文本时非常小,随着文本的输入,其宽度不断增大直到 maxWidth。按 Enter 键开始新行时其高度增加。

通过 widthInCharsheightInChars 属性,可以很方便地采用缩放字体大小的方式指定宽度和高度。还可以指定显式宽度或高度像素值,或者使用宽度和高度百分比值或各种约束(例如 leftrighttopbottom)。

当指定某种类型的宽度(无论是显式宽度或百分比宽度、maxWidth 还是 leftright 约束)时,文本将在组件的右边缘换行,且当文本超出组件宽度时垂直滚动查看。如果将 lineBreak 样式设置为 explicit,则仅在显式换行符处开始新行,例如,在 text 中使用 CR (r)、LF (n) 或 CR+LF (rn) 时,或者在 TLF 标记中使用 <p><br/> 时。在这些情况下,如果任何文本行的宽度超出了控件的范围,则可以水平滚动查看文本。

可以使用 maxChars 属性限制用户可以输入的字符数,使用 restrict 限制用户可以输入的字符。

multiline 属性确定了按 Enter 键后发生的操作。如果为 true,则按 Enter 键会开始一个新段落。如果为 false,则导致分派 FlexEvent.ENTER 事件。

如果不希望文本可编辑,请将 editable 属性设置为 false。如果甚至不希望文本可以进行选择,请将 selectable 属性设置为 false

因为 RichEditableText 使用 TLF,所以它支持显示从左到右 (LTR) 书写的文本(如法语)、从右到左 (RTL) 书写的文本(如阿拉伯语)以及双向书写的文本(如阿拉伯语语句中的法语语句)。如果文本的主要书写方向为从右到左,请将 direction 样式设置为 rtltextAlign 样式默认为 "start",这样,当 directionltr 时,文本左对齐;当 directionrtl 时,文本右对齐。要获得反向对齐,请将 textAlign 设置为 end

使用 TLF 后,RichEditableText 支持在一个编辑会话内执行无限次撤消/重做操作。编辑会话在组件获得键盘焦点时启动,在组件失去焦点时结束。

RichEditableText 使用 TLF 的 TextContainerManager 类处理文本显示、滚动、选择和编辑。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读