Adobe
产品
Acrobat
Creative Cloud
创意套装
Digital Marketing Suite
Digital Publishing Suite
Elements
Photoshop
Touch Apps
更多产品
解决方案
数字营销
数字媒体
教育
金融服务业
政府部门
网页体验管理
更多解决方案
学习帮助下载公司
商店
在线商店
批量许可
查找经销商
搜索
 
信息 登录
欢迎,我的支持
我的帐户
注销
为何登录?登录后可以管理您的帐户,访问试用版下载、产品扩展和社区区域等。
Adobe
产品 分类 购买   搜索  
解決方案 公司
学习
登录 注销 我的货物 我的支持
Date Date
Qty:
Subtotal
Checkout
Adobe 开发者中心 / Flash 开发人员中心 /

Flow Model的架构与设计

作者 田 勇

田 勇

作者 薛凌鸿

薛凌鸿

Content

  • Flow Model 总览
  • Flow Model 的组织结构
  • TLF 的 Format

创建日期

10 August 2011

页面工具

在 Facebook 上共享
在 Twitter 上共享
在 LinkedIn 上共享
书签
打印

Tags

要求

必备知识

熟悉 Flash Builder, Flex, 和 Actionscript 3.0。

用户级别

初级

需要的Adobe产品

  • Flex Builder (Download trial)

简介

通过前面文章的介绍,相信大家对 TLF 的基本架构已经有所了解。本文将着重介绍 TLF 里的核心内容 —— Flow Model,包括 Flow Model 的组织结构和 TLF 的 Format。

Flow Model 总览

Flow Model 包括 FlowElement 定义的对象以及 TextlayoutFormat 定义的格式。Flow Model 定义了数据结构来保存文本,它使用树形结构来存储文本和节点。其中 FlowElement 是整个 TLF 的核心,它是 Flow Model 中所有其它 Element 的基类。FlowElement 是有格式的,并提供设置格式的接口。

Flow Model 的组织结构

flow_model1

TLF 中的文本元素以树形结构存储,树中的元素表示文本内的逻辑分段。上图展示了 Flow Model 中各个类之间的继承关系,其中最重要的就是 FlowElement,FlowGroupElement 和 FlowLeafElement 这三个抽象基类,它们定义了这个树形结构。FlowElement 类是该树中所有元素对象的抽象基类,FlowGroupElement 类是所有容器元素对象的抽象基类,而 FlowLeafElement 类是所有叶子节点元素的抽象基类。

FlowElement 对象可以代表一篇文章,多篇文章或者一篇文章中的一段文字,并提供了一些文本元素的基本属性和方法。比如,使用 parent 属性访问父节点、textLength 属性获得文本长度以及 relativeParentStart 属性获得相对父节点的起始位置。

FlowGroupElement 类是所有的容器元素对象的基类,这些容器对象可以有一个或多个子节点,并提供 API 来操作和遍历这些子节点。容器类有 TextFlow,ParagraphElement,DivElement 和 LinkElement。其中,LinkElement 类代表一个超文本链接,与 XHTML 中的标签类似。链接中可以包含一个或多个 SpanElement,InlineGraphicElement 或者 TCYElement。TCYElement 代表竖排文本中的一小段横排文本,你可以在日文中使用 TCYElement 代表竖排文本中的一段横排文本。

FlowLeafElement 是树形结构中最底层元素对象的抽象基类,这些对象没有子节点。FlowLeafElement 可以添加文本,并且提供遍历和操作其它叶子节点的 API。叶子节点类有 InLineGraphic 和 SpanElement。其中,SpanElement 类代表具有共同格式的一段文字。InlineGraphicElement 类代表文本中的一个图形元素,在使用的时候被看作是一个字符。

TLF 的 Format

TLF 中有一个专门的类 TextLayoutFormat 负责 Flow Model 中元素的格式。TextLayoutFormat 支持一些预定义的格式名称与合法的赋值,FlowElement 类提供了设置格式的方法。

每一个格式属性在实现上其实是 TextLayoutFormat 类中一个属性类的静态实例,而属性类负责验证对应的格式的值是否合法。有一些格式属性非常复杂,可以接收数字,百分数甚至枚举类型。在实现上,属性类会持有一个数组来保存所有支持的类型。

flow_model2

上图展示了 TLF 的格式级联,如果子节点的格式没有定义,它会采用父节点设置的格式;如果子节点的格式定义与父节点不同,会覆盖父节点的格式。如上图,中间的 SpanElement 的字体定义为加粗,其父节点字体为正常,那么 SpanElement 中的文字将是粗体。此外,所有的格式都是无类型的,即类型为*。

TextLayoutFormat 支持用户自定义的格式,可以是任意的键值对,但是不要和内置的格式冲突。

下一步要做的事情

本文讲述了 TLF 中 Flow Model 的架构与设计,想要了解更多有关 TLF 的知识,请参考 TLF 开发人员的系列教程。

TLF概览

Flash User Forum

More
04/23/2012 Auto-Save and Auto-Recovery
04/23/2012 Open hyperlinks in new window/tab/pop-up ?
04/21/2012 PNG transparencies glitched
04/01/2010 Workaround for JSFL shape selection bug?

Flash Cookbooks

More
02/13/2012 Randomize an array
02/11/2012 How to create a Facebook fan page with Flash
02/08/2012 Digital Clock
01/18/2012 Recording webcam video & audio in a flv file on local drive

产品

  • Acrobat
  • Creative Cloud
  • Creative Suite
  • Digital Marketing Suite
  • Digital Publishing Suite
  • Elements
  • 移动应用程序
  • Photoshop
  • Touch Apps

解决方案

  • 数字营销
  • 数字媒体
  • 网页体验管理

行业

  • 教育
  • 金融服务业
  • 政府部门

帮助

  • 产品帮助中心
  • 订货和退货
  • 下载和安装
  • 我的 Adobe

学习

  • Adobe 开发人员连接
  • Adobe TV
  • 培训和认证
  • 论坛
  • 设计中心

购买方式

  • 在线商店
  • 批量许可
  • 查找经销商

下载

  • Adobe Reader
  • Adobe Flash Player
  • Adobe AIR
  • Adobe Shockwave Player

公司

  • 新闻编辑室
  • 合作伙伴计划
  • 公司社会责任
  • 工作机会
  • 投资者关系
  • 事件
  • 法律
  • 安全
  • 联系 Adobe
选择您的地区 中国(更改)
选择您的地区 关闭

North America

Europe, Middle East and Africa

Asia Pacific

  • Canada - English
  • Canada - Français
  • Latinoamérica
  • México
  • United States

South America

  • Brasil
  • Africa - English
  • Österreich - Deutsch
  • Belgium - English
  • Belgique - Français
  • België - Nederlands
  • България
  • Hrvatska
  • Česká republika
  • Danmark
  • Eastern Europe - English
  • Eesti
  • Suomi
  • France
  • Deutschland
  • Magyarország
  • Ireland
  • Israel - English
  • ישראל - עברית
  • Italia
  • Latvija
  • Lietuva
  • Luxembourg - Deutsch
  • Luxembourg - English
  • Luxembourg - Français
  • الشرق الأوسط وشمال أفريقيا - اللغة العربية
  • Middle East and North Africa - English
  • Moyen-Orient et Afrique du Nord - Français
  • Nederland
  • Norge
  • Polska
  • Portugal
  • România
  • Россия
  • Srbija
  • Slovensko
  • Slovenija
  • España
  • Sverige
  • Schweiz - Deutsch
  • Suisse - Français
  • Svizzera - Italiano
  • Türkiye
  • Україна
  • United Kingdom
  • Australia
  • 中国
  • 中國香港特別行政區
  • Hong Kong S.A.R. of China
  • India - English
  • 日本
  • 한국
  • New Zealand
  • 台灣

Southeast Asia

  • Includes Indonesia, Malaysia, Philippines, Singapore, Thailand, and Vietnam - English

Copyright © 2012 Adobe Systems Incorporated. All rights reserved.

使用条款 | 隐私政策和 Cookies (更新)

京 ICP 备 10217899 号 京公网安备 110105010404