最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

Flow Model 的架构与设计

  • 2011-09-09
  • 本文字数:1418 字

    阅读完需:约 5 分钟

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

要求

预备知识

熟悉 Flash Builder, Flex, 和 Actionscript 3.0。

需要的 Adobe 产品

内容预览

Flow Model 总览

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

Flow Model 的组织结构

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

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

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

下一步要做的事情

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

TLF 概览

查看原文: Flow Model 的架构与设计

2011-09-09 00:00978

评论

发布
暂无评论
发现更多内容

谷歌全线反击!PaLM 2部分性能已经超越GPT-4

引迈信息

低代码 Google ChatGPT JNPF PaLM 2

瓴羊Quick BI数据可视化打造看板,助力极氪汽车决策

夏日星河

让开发者成为创新主体 | 阿里云云原生4月动态

阿里巴巴云原生

阿里云 云原生 月报

基于Sovit2D智慧养鸡组态大屏管理系统

2D3D前端可视化开发

物联网 组态软件 智慧农业 web组态 智慧养鸡

如何使用Fiddler抓取APP接口和微信授权网页源代码

北桥苏

fiddler 网络抓包 抓包分析 抓包工具

2023年以太坊测试网水龙头整理(包含Goerli和Sepolia)

加密先生

eth 测试币

开源且强大——Linux永远的神

这我可不懂

ios Linux 低代码

开源字节数字化乡村系统

源字节1号

开源 软件开发 小程序开发

ios打包ipa的四种实用方法(.app转.ipa)

雪奈椰子

PHP公众号开发给用户发微信消息提醒功能

北桥苏

微信公众号 模板 公众号接入

感受国产BI工具的理论,瓴羊Quick BI、Smartbi对比

对不起该用户已成仙‖

3 步集成 Terraform + 极狐GitLab CI ,实现基础设施自动化管理

极狐GitLab

ci DevOps 基础设施 Terraform 极狐GitLab

流控验证太麻烦?不敢上生产?MSE 有办法!

阿里巴巴云原生

阿里云 微服务 云原生 Spring Cloud Apache Dubbo

如何使用apache的ab压力测试小工具传参数

北桥苏

AB apche A/B 测试

MySQL表分区的选择与实践小结

北桥苏

MySQL 表分区

中馥科技集团成为五粮液社交零售战略合作伙伴,强强联手布局白酒赛道

电子信息发烧客

Goerli ETH(GETH)测试币永久免费领,这篇教程助你撸毛

加密先生

eth Goerli 测试币

PHP简单实现异步多文件上传并使用Postman测试提交图片

北桥苏

php OSS thinkphp

如何用Xcode安装ipa

雪奈椰子

DApp泰山众筹系统开发合约搭建

薇電13242772558

智能合约 dapp

MobTech MobPush|TCP通道和共享链路通道

MobTech袤博科技

【技术干货】PCB焊盘设计之问题详解

华秋PCB

工具 PCB PCB设计 焊盘 可焊性

购买小间距led显示屏需要注意什么?

Dylan

图像 像素灰度 LED显示屏

IOS技术分享| 快对讲2.0会议场景实现

anyRTC开发者

ios 音视频 视频会议 移动开发 快对讲

打破技术封锁,瓴羊Quick BI、Smartbi等国产BI工具崛起

夜雨微澜

大数据

ChatGPT 再遭禁用 | 人工智能时代下数据安全如何保障

BinTools图尔兹

人工智能 数据库 ChatGPT CloudQuery

从“能用”到“好用”:它的出现,解决你80%的转型困境【内含免费试用附教程】

加入高科技仿生人

低代码 数字化业务转型 数字转型

轻松网站下载:SiteSucker mac汉化激活版

真大的脸盆

Mac Mac 软件 网站下载 下载网站工具 网站下载工具

聊点技术 | 自适应AI,让Bonree ONE更智能

博睿数据

可观测性 智能运维 博睿数据 Bonree ONE ONE有引力

聆心智能联合洪恩打造“AI问答”|国内首批儿童启蒙成长领域类ChatGPT式应用

硬科技星球

如何向大模型ChatGPT提出问题以获得优质回答:基于AIGC和深度学习的实践指南

蓝海大脑GPU

Flow Model 的架构与设计_语言 & 开发_薛凌鸿_InfoQ精选文章