`

[转]flash.text.engine 入门笔记

 
阅读更多

http://cjmxp007.blog.163.com/blog/static/35473837201052741810411/

Flash Player 10中提供的新功能之一:强大的文本排版能力无疑是Flash Player 10中最复杂的功能之一,连Adobe自己都觉得太复杂了,以至于推出一个TextLayout Framework来协助开发者进行开发。

小生我也是正在入门中,先撇开 TextLayout Framework不说,从最底层探索吧,一起在这里分享下我的学习笔记。

第一节:牛逼无比,万物之主的 TextBlock(flash.text.engine.TextBlock)

何为TextBlock?顾名思义我们可以称之为文本块,例如我们的一段文字就是视为放 在一个文本块里,文本块只是负责保存文本的内容和格式,仅当需要输出时才会确定输出文本的长度和面积。废话不说,看代码:

var txt:String = "这是一段非常长非常长的文本,即便实际上看上去并不长!";

//定义元素的字体以及格式

var format:ElementFormat = new ElementFormat(new FontDescription("Arial"));

//可恶,还是没有单位,要是能像CSS中的定义为12px多优美啊

format.fontSize = 12;

var textEle:TextElement = new TextElement(txt, format);

//新建立一个文本块,并将文本元素变为 其内容

var textBlock;TextBlock = new TextBlock();

textBlock.content = textEle;

/**

* 实际上textBlock.createTextLine有两个参数,第一个参数是上一行文本对象

* 第二个参数是输出文本行的宽度,我这里随便写了个50px

*/

var textLine:TextLine = textBlock.createTextLine(null, 50);

//设定文本行的位置

textLine.x = 10;

textLine.y = 10;

addChild(textLine);

//设定第二行文本,为何叫第二行文本, 因为在createTextLine的时候指定了上一行是textLine

var textLine2;TextLine = textBlock.createTextLine(textLine, 100);

textLine2.x = 10;

textLine2.y = textLine.y + textLine.height + 10;

addChild(textLine2);

在你的Flash CS4的时间轴上写下上面的代码编译运行看看会有什么效果?别忘记选择一下文本看看效果!

在上面的代码里,还能看到TextLine这个类,此类相当于是一个文本行,一个文本块 可以输出多个文本行,而这些文本行的位置可以任你随心所欲的放置在舞台上的任何角落,而他们的顺序也是你来指定的,很爽吧!

那么今天的分享先到这里。

下次分享下强大的 GraphicElement, 并且配合今天的分享的知识一起来实现一个更加牛逼的效果!

回 顾一下flash.text.TextField这个类,在图文混排的时候存在什么缺陷?

相信很多人都认为其结构描述能力太差,图片不支持inline,而且要更换文本域内的图 片也会显得非常麻烦(虽然flash.text.engine也不见得简单)。

首先介绍下GraphicElement类,此类顾名思义就是一个图像元素,纯属一个表 现型的元素,相当于HTML中的IMG,只是其不具备读取图像功能,只能通过Loader将外部图片读取,然后把Loader作为其Content。

看看如下实例代码:

//绘制一个红色矩形来作为我们的图片

var shape:Shape = new Shape();

shape.graphics.beginFill(0xff0000);

shape.graphics.drawRect(0, 0, 100, 100);

shape.graphics.endFill();

//建立一个图像元素,并将我们的 shape作为其显示的内容,同时也可以成为一个Loader

var graphicEle:GraphicElement = new GraphicElement(shape, shape.width, shape.height);

//建立一个文本块,用于装载图像元素并 输出行

var textBlock:TextBlock = new TextBlock();

textBlock.content = graphicEle;

var textLine:TextLine = textBlock.createTextLine(null, 200);

textLine.x = 100;

textLine.y = 100;

addChild(textLine);

上面的例子已经简单介绍了 GraphicElement类的使用方法,那么如何实现图片inline的图文混排呢?在flash.text.engine里提供了一个 GroupElement类,通过其能将所有的元素组合起来,再看如下代码:

//绘制一个红色矩形来作为我们的图片

var shape:Shape = new Shape();

shape.graphics.beginFill(0xff0000);

shape.graphics.drawRect(0, 0, 100, 100);

shape.graphics.endFill();

//建立一个图像元素,并将我们的 shape作为其显示的内容,同时也可以成为一个Loader

var graphicEle:GraphicElement = new GraphicElement(shape, shape.width, shape.height);

//建立一个文本元素

var format:ElementFormat = new ElementFormat(new FontDescription("Arial"));

format.fontSize = 12;

var textEle:TextElement = new TextElement("Hello World!", format);

//把所有刚刚建立的元素丢到一个 Vector里面,并且组合成一个组元素

var eleVector:Vector.<ContentElement> = new Vector.<ContentElement>();

eleVector.push(textEle, graphicEle);

var groupEle:GroupElement = new GroupElement(eleVector);

//建立一个文本块,用于装载图像元素并 输出行

var textBlock:TextBlock = new TextBlock();

textBlock.content = groupEle;

var textLine:TextLine = textBlock.createTextLine(null, 300);

textLine.x = 100;

textLine.y = 100;

addChild(textLine);

通过如上的代码,各位看官应该能对 flash.text.engine有了个大体的认识了吧,至于排版的细节,相信也不需要小弟在这里赘述了,因为textline更搞定一切,加上小弟才 疏学浅,还不如各位看官直接查阅帮助文档的属性来得有效。

一些资料

http://www.insideria.com/2009/03/flash-text-engine.html
http://www.riameeting.com/node/658
http://tj007-bo.javaeye.com/blog/333421
http://zengrong.net/post/770.htm

Adobe官方的一个例子

        在labs.adobe.com上更新了有关于FLASH PLAYER 10中一个特别重要的功能,就是高级文字处理功能的框架组件,其实在FLASH CS4刚刚发表的时候,我就已经测试了大量的有关于高级文字处理的一些功能,但是一直没有写成教程,因为总觉得不够,过于简单,如果光光是帮助文档的那些 东西,其实有没有这个高级处理功能都无所谓,只要你愿意花点功夫,早期的文本处理完全够用。
       不过,这一次TextLayout Framework的发布足够强劲,光是DEMO看的让人眼花缭乱,才是真正展示了高级文本处理的“高级”在哪里,所以http://labs.adobe.com/technologies/textlayout/上 的DEMO你绝对不可错过。不过更别忘了去以下地址下载:
http://labs.adobe.com/downloads/textlayout.html
        我 的建议是三项下载都下载,因为里面的示例比较全面,还外加了扩展组件和FLEX的MXML代码。关于用FLEX来编写,就需要大家把FLEX 3升级到3.02,然后在属性-编译版块,把默认的FLASH PLAYER 版本改成10.0.0,或者直接升级到FLEX 4也成,不过FLEX 4更新的实在太快,尝试下就可,主要还是尽快升级到3.02版本。


        下面这个是集合的文字处理的大DEMO,你可以感受感 受
        http://labs.adobe.com/technologies/textlayout/demos/

分享到:
评论

相关推荐

    CrystalDecisions.CrystalReports.Engine(多版本)

    《CrystalDecisions.CrystalReports.Engine:深入了解与应用》 CrystalDecisions.CrystalReports.Engine 是一款由 SAP AG 开发的报表引擎组件,主要用于创建、查看和管理 Crystal Reports 报表。这个组件广泛应用...

    CrystalDecisions.CrystalReports.Engine

    《CrystalDecisions.CrystalReports.Engine:深入解析与应用》 在信息技术领域,报表系统扮演着至关重要的角色,它能够帮助企业、机构等高效地管理和分析数据。Crystal Reports是一款由SAP公司开发的著名报表工具,...

    cityengine入门笔记.pdf

    CityEngine 入门笔记 CityEngine(CE)是一款基于 CGA(Computer Generated Architecture)语句的建模工具,由 ESRI 公司开发。它可以将建模工作语义化,使得模型的一些参数(如尺寸、高度、颜色、贴图、部件)可以...

    crystaldecisions.crystalreports.engine

    水晶报表动态资源库,在网上找咯许久,现在传到里面供大家分享哈

    Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser

    标题 "Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser" 提示了一个Java运行时错误,这通常意味着在尝试加载或初始化`JRStyledTextParser`类时遇到了问题。`JRStyledTextParser`是...

    CrystalDecisions.CrystalReports.Engine.dll

    CrystalDecisions.CrystalReports.Engine.dll 10.5.1.2285

    com.ptc.vuforia.engine-9.4.6.rar

    Vuforia Engine 9.4.6 是一个专为Unity开发的增强现实(AR)平台,由PTC公司提供。这个离线缓存包是用于在没有互联网连接的情况下安装和使用Vuforia Engine的重要资源。在Unity项目中集成Vuforia,开发者可以创建...

    Vuforia Engine的unity开发包com.ptc.vuforia.engine-10.7.2.tgz最新版本AR

    Vuforia Engine是一款强大的增强现实(AR)开发平台,专为Unity设计,使开发者能够创建具有交互性和沉浸感的AR体验。在"com.ptc.vuforia.engine-10.7.2.tgz"这个最新的版本中,它提供了丰富的功能和优化,以支持更...

    支持 Unreal Engine 开发的游戏进行数据采集的 SDK.zip

    支持 Unreal Engine 开发的游戏进行数据采集的 SDK.zip支持 Unreal Engine 开发的游戏进行数据采集的 SDK.zip支持 Unreal Engine 开发的游戏进行数据采集的 SDK.zip支持 Unreal Engine 开发的游戏进行数据采集的 SDK...

    vc-matlab.rar_engine_engine.h matlab_libmx.lib_matlab engine_

    标签中的"qt_matlab_engine.h"可能指的是如果在Qt环境中使用MATLAB引擎,你可能还需要包含`qt_matlab_engine.h`这个特定的头文件,它是MATLAB引擎与Qt结合使用的接口。 在提供的压缩包文件中,`vc与matlab.doc`可能...

    i.MX25 CPU Engine Board

    **i.MX25 CPU Engine Board** 是一款专为多媒体中心设计的主板,它集成了NAND Flash存储技术和i.MX253处理器,旨在提供高性能、高可靠性的多媒体处理能力。该主板适用于多媒体应用开发,尤其是对于需要处理复杂音频...

    ArcGISEngine.rar_ArcGISEngine

    本压缩包"**ArcGISEngine.rar_ArcGISEngine**"显然是围绕如何使用ArcGIS Engine来加载各种类型的数据进行深入探讨的资源集合。 **1. ArcGIS Engine基本概念** ArcGIS Engine提供了丰富的API和控件,开发者可以使用...

    ArcGISEngine.rar_ArcGISEngine_ArcGISEngine ESRI_arcgisengine CSh

    本教程集中的"ArcGISEngine.pdf"文档可能涵盖了这些内容,包括实例代码和讲解,是初学者的宝贵资源。 5. **开发实践** 开发实践中,了解如何集成ArcGIS Engine到C#项目、配置开发环境(如Visual Studio)、调试和...

    ArcGIS-Engine.zip_arcgis engine_arcgis engine

    **ArcGIS Engine 入门指南** ArcGIS Engine是一款由Esri公司推出的强大的地理信息系统(GIS)开发工具,它允许开发者创建具有地图展示、空间分析、数据管理等功能的应用程序。本资料包是针对ArcGIS Engine的入门...

    Cheat Engine.exe

    Cheat Engine.exe是该软件的执行文件,用户通过运行这个程序来启动和使用Cheat Engine。 在深入讲解Cheat Engine之前,我们先了解一些基础知识。内存修改是通过读取和修改程序在内存中的数据来实现作弊的一种技术。...

    ArcGIS Engine入门教程

    ### ArcGIS Engine 入门教程知识点详解 #### 一、ArcGIS 10.3 总览 **ArcGIS 10.3**是ESRI公司发布的一个版本,旨在为用户提供一套全面且强大的地理信息系统(GIS)解决方案。该版本不仅在技术上有所提升,同时也...

    AccessDatabaseEngine_32.exe或者AccessDatabaseEngine_64.exe引擎.zip

    Access32和64版本的作用是,当我们在VS的Winfrom窗体添加导入导出Excel文件时,给自身电脑添加识别Excel的安装包,程序就不会报错,根据电脑自身安装不同的位数,这样就可以Excel文件的导入导出

Global site tag (gtag.js) - Google Analytics