`

[转]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/

分享到:
评论

相关推荐

    白色卡通风格响应式游戏应用商店企业网站模板.zip

    白色卡通风格响应式游戏应用商店企业网站模板.zip

    48页-智慧工地监管平台解决方案.pdf

    智慧工地,作为现代建筑施工管理的创新模式,以“智慧工地云平台”为核心,整合施工现场的“人机料法环”关键要素,实现了业务系统的协同共享,为施工企业提供了标准化、精益化的工程管理方案,同时也为政府监管提供了数据分析及决策支持。这一解决方案依托云网一体化产品及物联网资源,通过集成公司业务优势,面向政府监管部门和建筑施工企业,自主研发并整合加载了多种工地行业应用。这些应用不仅全面连接了施工现场的人员、机械、车辆和物料,实现了数据的智能采集、定位、监测、控制、分析及管理,还打造了物联网终端、网络层、平台层、应用层等全方位的安全能力,确保了整个系统的可靠、可用、可控和保密。 在整体解决方案中,智慧工地提供了政府监管级、建筑企业级和施工现场级三类解决方案。政府监管级解决方案以一体化监管平台为核心,通过GIS地图展示辖区内工程项目、人员、设备信息,实现了施工现场安全状况和参建各方行为的实时监控和事前预防。建筑企业级解决方案则通过综合管理平台,提供项目管理、进度管控、劳务实名制等一站式服务,帮助企业实现工程管理的标准化和精益化。施工现场级解决方案则以可视化平台为基础,集成多个业务应用子系统,借助物联网应用终端,实现了施工信息化、管理智能化、监测自动化和决策可视化。这些解决方案的应用,不仅提高了施工效率和工程质量,还降低了安全风险,为建筑行业的可持续发展提供了有力支持。 值得一提的是,智慧工地的应用系统还围绕着工地“人、机、材、环”四个重要因素,提供了各类信息化应用系统。这些系统通过配置同步用户的组织结构、智能权限,结合各类子系统应用,实现了信息的有效触达、问题的及时跟进和工地的有序管理。此外,智慧工地还结合了虚拟现实(VR)和建筑信息模型(BIM)等先进技术,为施工人员提供了更为直观、生动的培训和管理工具。这些创新技术的应用,不仅提升了施工人员的技能水平和安全意识,还为建筑行业的数字化转型和智能化升级注入了新的活力。总的来说,智慧工地解决方案以其创新性、实用性和高效性,正在逐步改变建筑施工行业的传统管理模式,引领着建筑行业向更加智能化、高效化和可持续化的方向发展。

    基于卷积神经网络的AV1视频编码环路滤波技术

    内容概要:本文提出了一种基于卷积神经网络(CNN)的AV1视频编码环路滤波方法。该方法利用深度可变的简单网络结构SimNet,针对不同量化参数(QP)调整网络深度,从而提高编码效率和视觉质量。同时,作者提出了一种适用于INTER编码的跳过增强策略,以避免重复增强导致的图像质量下降。实验结果表明,该方法在INTRA和INTER编码模式下分别实现了平均7.27%和5.57%的BD-rate降低,且在编码时间上优于AV1基准。 适合人群:视频编码研究人员、AI开发者、多媒体技术专家。 使用场景及目标:适用于提升视频压缩编码的效率和视觉质量,特别是对于AV1视频编码标准的应用。 其他说明:该方法不仅提高了编码效率和视觉质量,还降低了计算复杂度。

    白色简洁风格的商业投资组合网站HTML5模板.zip

    白色简洁风格的商业投资组合网站HTML5模板.zip

    在线式缠绕膜机自动覆膜缠绕机sw16全套技术资料100%好用.zip

    在线式缠绕膜机自动覆膜缠绕机sw16全套技术资料100%好用.zip

    (176109030)基于ESO的永磁同步电机无感FOC1.采用线性扩张状态观测器(LESO)估计电机反电势,利用锁相环从反电势中提取位置和转速信息

    基于ESO的永磁同步电机无感FOC 1.采用线性扩张状态观测器(LESO)估计电机反电势,利用锁相环从反电势中提取位置和转速信息,从而实现无位置传感器控制; 2.提供算法对应的参考文献和仿真模型。 购买赠送PMSM控制相关电子资料。 仿真模型纯手工搭建,不是从网络上复制得到。 仿真模型仅供学习参考。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

    白色简洁风格的酒店展示及预订企业网站源码下载.zip

    白色简洁风格的酒店展示及预订企业网站源码下载.zip

    白色简洁风格的享受旅行导航指南整站网站源码下载.zip

    白色简洁风格的享受旅行导航指南整站网站源码下载.zip

    白色简洁风格的照片浏览切换源码下载.rar

    白色简洁风格的照片浏览切换源码下载.rar

    白色简洁风格的女装商城整站网站源码下载.zip

    白色简洁风格的女装商城整站网站源码下载.zip

    EnvironmentError.md

    EnvironmentError.md

    白色简洁风格的举重锻炼健身企业网站模板.zip

    白色简洁风格的举重锻炼健身企业网站模板.zip

    html+css+js网页设计 美食 家美食1个页面

    预览地址:https://blog.csdn.net/qq_42431718/article/details/144758683 html+css+js网页设计 美食 家美食1个页面

    白色简洁风格的室内家具展示企业网站源码下载.zip

    白色简洁风格的室内家具展示企业网站源码下载.zip

    白色简洁风格的婚礼活动展示信息源码下载.zip

    白色简洁风格的婚礼活动展示信息源码下载.zip

    Python绘制圣诞树:文本和图形实现

    内容概要:本文详细介绍了使用Python绘制圣诞树的方法,包括简单的文本圣诞树、使用Turtle库绘制复杂图形圣诞树,以及添加装饰和动态效果的高级应用。文章通过代码示例和详细的解释,逐步展示了如何实现不同风格的圣诞树。 适合人群:Python初学者,特别是对图形编程感兴趣的读者。 使用场景及目标:① 学习如何使用Python的字符串操作和循环结构绘制文本圣诞树;② 掌握Turtle库的基本用法,绘制复杂的图形圣诞树;③ 添加装饰和动态效果,提升节日氛围。 阅读建议:建议读者跟随代码示例进行实践,结合注释和解释,更好地理解和掌握每个步骤的实现方法。

    白色简洁风格的宴席精致餐饮整站网站源码下载.zip

    白色简洁风格的宴席精致餐饮整站网站源码下载.zip

    基于STM32f103的红外测温仪程序(测温模块MLX90614,芯片GY906)

    采用STM32F103系列作为主控,利用MLX90614采集温度,配以OLED显示以及flash存储数据

    html渲染器,粘贴html代码到这个渲染器即可渲染出对应的效果

    html渲染器,粘贴html代码到这个渲染器即可渲染出对应的效果

    在线教育平台:课程管理与学习分析

    随着学业负担的日益加重,越来越多的学生选择通过家教、自学或参加补习班来加强课外学习。然而,家教费用高昂,自学效率低下且难以及时解决疑难问题,而补习班则受限于时间和地点,灵活性不足。此外,国家政策也不鼓励校外补习。鉴于网络技术的成熟和各类在线平台的兴起,开发一个专业的在线辅助学习网站对于辅助学生的课外学习显得尤为重要。 本在线教育系统基于Vue.js构建,采用B/S架构设计,后端语言为Java,数据库使用MySQL。通过整合Vue.js技术,系统界面更加丰富和友好。系统主要面向课程购买用户,涉及的角色包括管理员、学生和教师。学生可以注册登录后浏览课程视频、收藏课程、留言并购买课程,同时实现订单管理。管理员负责管理学生信息、课程信息、发布班级和管理章节等。教师则可以管理课程订单、课程内容和章节。该系统允许学生利用碎片时间自主学习,具有很高的灵活性,对于难以理解的课程可以反复学习并在线提问,极大地促进了学生的学习。

Global site tag (gtag.js) - Google Analytics