现在的位置: 首页FLASH>正文
flash category
使用AS3中的FTE与TLF来渲染文本
发表于242 天前 FLASH 暂无评论

FTE(Flash Text Engine)和TLF(Text Layout Framework)。它们的强大自不必多说,可去该文章提供的网址查看,或者直接看这个Demo。但是,在Flex与Flash中有对应的组件可以使用么?FTE和TLF是什么关系?

关系

TLF是建立在FTE的基础上的。或者说TLF在FTE的基础上实现了”高级功能”。直接使用FTE是很难受的,连Adobe都这样说:

“FTE 提供对文本度量、格式和双向文本的复杂控制的低级别支持。尽管可以使用 FTE 创建和管理简单的文本元素,但设计 FTE 的主要目的在于为开发人员创建文本处理组件提供基础。

请注意加粗的部分。Adobe认为FTE并不适合做文本处理。因此,Adobe又做了TLF,并且将TLF整合到了Flex SDK 4.0(Gumbo)中。但TLF同样不是组件。不过TLF已经可以将需要显示的文本输入到DisplayObject当中,并加入了对选择文本、编辑文本、快捷键、事件的支持,虽然仍不能直接支持滚动条(配合事件和滚动条组件是可以支持的),但这已经前进了一大步,更方便我们使用了。

那我们就基于TLF来开发么?不是。我需要的是像Flash或者Flex中的TextArea组件一样来简单的使用TLF。为了实现我这个美好的愿望,Adobe针对Flash CS4制作了Text Layout Component组件,针对Flex的组件则包含在新的spark包中。

下载Text Layout Component:

Text Layout Component (1.5 MiB, 435 hits)

Text Layout Component 使用范例 (6.5 MiB, 517 hits)

说到这里,这个关系就比较顺了。TLF就是FTE的扩展,这个扩展其实还是代码层面多些。而Text Layout Component和spark中的相关组件又是TLF的扩展,它们才是真正的组件级别的应用。

Text Layout Framework :新功能

1. 支持复杂文字

尽管TextField很好用,而且占用内存很少,在flash player 10 中用它来显示少量静态文本是一个不错的选择,但是web设计师们十分渴望一个更加高级的排版控件,因此我们选择了Text Layout Framework。

Text Layout Framework是一组支持复杂文字和高级排版方式的Actionscript 3库,其布局特性在TextField类中是没有的的。

复杂文字的支持不仅包括从左到右显示和编辑文字的能力,而且要支持从左到右和从右到左的混合排版文字,例如阿拉伯文和希伯来文。该框架不仅支持中文,日文,韩文的垂文本布局,同样支持tate-chu-yoko(TCY Elements),即将横向文字块嵌入到垂直的文本流中。

目前支持以下文字:

  • 拉丁文(英语、西班牙语、法语、越南语)
  • 希腊文、西里尔文、亚美尼亚、格鲁吉亚语、埃塞俄比亚语
  • 阿拉伯语、希伯来语
  • 中文、日文和韩文
  • 孟加拉语、果鲁穆奇语、马拉雅拉姆语、泰卢固语、泰米尔语、古吉拉特语、奥里亚语、卡纳达语、藏语
  • Tifinagh, Yi, Cherokee, Canadian Syllabics, Deseret, Shavian, Vai, Tagalog, Hanunoo, Buhid, Tagbanwa

2. 高级排版和布局功能

高级排版的支持和布局特性包括:

  • 高级的文本样式:连字(印刷), typographic case, digit case, and digit width;
  • 高级的文本布局控制:字间距,锚定位(tracking),行间距,上标(superscript),下标(subscript),基线移位;
  • 多列文字,每一列作为一个文本容器;
  • 两个挨着的文本容器支持文本连续的选择;
  • inline的图形,嵌入到文本流中被当做文本一样处理(这个是图文混排的基础);
  • Support for tabs

详细的描述和例子,请到这里Text Layout Component for Flash CS4 Professional Overview

3. 需要Flash Player 10的支持

Text Layout Framework需要Flash Player10或者更新的版本,因为它是基于Flash player 10的新文本引擎(FTE)。FTE用过flash.text.engine包访问,这个包是Flash Player 10 API的一部分。Flash Player API,提供了对文本引擎底层的访问能力,这意味着一些任务需要大量的代买。当一个API提供如此底层的访问时,它通常会提供一个像Text Layout Framework这样的高层框架,来封装一些简单的API,这同样也提供了一个合适的框架,将FIE底层的API的基本功能组织成一个比较简单适用的系统。和FTE不同的是,Text Layout Framework没有被build进Flash Player。而且,他是一个用Actionscript 3.0写的独立的组件,在Flash CS 4和Flex Gumbo中同样适用。尽管它是设计成灾Flash CS4和Flex Gumbo中使用的,但它并不依赖于它们。例如,如果你在使用Flash CS 4,你有两种方法是用Text Layout Framework.。如果你喜欢拖拽text组件到舞台上,你可以使用新的Flash CS4 TextLayout组件,他是基于Text Layout Framework专门用Flash CS4的。需要澄清的是,TextLayout组件是专用于Flash CS4,是基于Text Layout Framework但并不是它的一部分。如果你喜欢在代码中用as3直接使用Text Layout Framework,你同样可以,只要你确定Text Layout Framework的库文件在正确的路径下。如果你使用Flex Gumbo,你同样有两个选择。你既可以使用基于Text Layout Framework的FxTextArea组件,或者直接在代码中使用Text Layout Framework。另外,由于Flex 3.2已经支持Flash Palyer 10,你可以在Flex 3.2中直接使用Text Layout Framework。

Text Layout Framework :架构

1. Text Layout Framework的结构

Text Layout Framework 包括三个分离的组件•textLayout_core.swc•textLayout_conversion.swc•textLayout_edit.swctextLayout_core组件 (hereinafter the “core component”) 是框架的核心组件,它处理文本的存储,文本容器的建立以及文本的显示。离开了textLayout_core你将无法使用Text Layout Framework。这个组件就顺理成章的包括着组成该框架的主要代码。textLayout_conversion组件(hereinafter the “conversion component”) 是用来将文本导入和导出框架的。如果你想使用没有直接编译进SWF文件的文本,这个组件是必须的。textLayout_edit组件 (hereinafter the “edit component”) 是用来编辑存储在core component中文本的组件。如果你想使用文本的编辑和选择功能,这个组件是必须的。所有组成框架的类都在flashx.textLayout包下。例如,处理文本存储的类在flashx.textLayout.containers包下。flashx.textLayout一共有10个子包,随着你逐渐了解Text Layout Framework的结构,你将越来越多的感受到它们的意义。

Text Layout Framework 包括三个分离的组件

  • textLayout_core.swc
  • textLayout_conversion.swc
  • textLayout_edit.swc

textLayout_core组件 (hereinafter the “core component”) 是框架的核心组件,它处理文本的存储,文本容器的建立以及文本的显示。离开了textLayout_core你将无法使用Text Layout Framework。这个组件就顺理成章的包括着组成该框架的主要代码。

textLayout_conversion组件(hereinafter the “conversion component”) 是用来将文本导入和导出框架的。如果你想使用没有直接编译进SWF文件的文本,这个组件是必须的。

textLayout_edit组件 (hereinafter the “edit component”) 是用来编辑存储在core component中文本的组件。如果你想使用文本的编辑和选择功能,这个组件是必须的。

所有组成框架的类都在flashx.textLayout包下。例如,处理文本存储的类在flashx.textLayout.containers包下。flashx.textLayout一共有10个子包,随着你逐渐了解Text Layout Framework的结构,你将越来越多的感受到它们的意义。

2. Text Layout Framework的架构

理解Model-View-Controller (MVC)设计模式将帮助你更好的理解Text Layout Framework的架构。虽然Text Layout Framework并没有严格的遵守MVC设计模式,但它和MVC如此地接近,以至于理解了MVC将很容易地理解Text Layout Framework的架构。

MVC设计模式主张将代码按功能分离成三个不同的模块。第一个模块是模型层,不仅包括原始数据,而且包括访问数据的规则。第二个模块是视图层,处理数据的呈现。第三个模块是控制层,处理用户和视图之间的交互,把用户的行为(如选择或者编辑内容),传送到命令中来盖面模型层中的数据。通常在一个框架中只有一个模型,但是可以有很多视图和控制器。

Text Layout Framework的模型层主要定义在elements包中,包括存储文本的数据结构的类和接口。conversion类同样可以认为是模型层的一部分,它包含将数据导入和导出的规则。

Text Layout Framework的视图层包括三个包,它们使Flash Player呈现文本变得很简单。factory包提供了显示静态文本的简单方式。container包含了定义显示动态文本容器的类和接口。compose包定义了在容器中定位和显示动态文本的技术。

Text Layout Framework的控制层包含了两个处理用户与模型层交互的包。edit和operations包定义了用来编辑模型中文本的类。

报歉!评论已关闭.