摘自http://hi.baidu.com/airlonepig/item/0848b9195e7eb01de65c36b4

使用方法:var _sprite:Sprite = new Sprite(); var _txFormat:TextLayoutFormat = new TextLayoutFormat(); // 默认样式 var html:String = ""; var _tf:TextFlow = TextConverter.importToFlow(html, TextConverter.TEXT_FIELD_HTML_FORMAT); //导入html,生成textflow var _em:EditManager = new EditManager(new UndoManager()); //编辑选择、样式设置 _tf.interactionManager = _em; _em.focusedSelectionFormat = new SelectionFormat(0xa8c6ee, 1.0, BlendMode.NORMAL, 0xa8c6ee, 1.0, BlendMode.NORMAL, 0);  _em.inactiveSelectionFormat = new SelectionFormat(0xa8c6ee, 1.0, BlendMode.NORMAL, 0xa8c6ee, 1.0, BlendMode.NORMAL, 0); _em.unfocusedSelectionFormat = new SelectionFormat(0xe8e8e8, 1.0, BlendMode.NORMAL, 0xe8e8e8, 1.0, BlendMode.NORMAL, 0); addChild(_sprite);tf.format = _txFormat; var _container:ContainerController = new ContainerController(_sprite,width, height); //显示容器控制器 _tf.flowComposer.addController(_container);             _tf.addEventListener(SelectionEvent.SELECTION_CHANGE, selectionChangeListener, false, 0, true); _tf.addEventListener(StatusChangeEvent.INLINE_GRAPHIC_STATUS_CHANGE, graphicStatusChangeEvent, false, 0, true); _tf.addEventListener(CompositionCompleteEvent.COMPOSITION_COMPLETE, compositionCompleteHandler, false, 0, true); _tf.addEventListener(FlowOperationEvent.FLOW_OPERATION_COMPLETE, change);

1、 设置textflow失去焦点时的选中状态var selectionManager:ISelectionManager = textFlow.interactionManager;//当选择部分不在活动窗口中时,用于绘制选择的 SelectionFormat 对象。 selectionManager.inactiveSelectionFormat = new SelectionFormat(0xa8c6ee, 1.0, BlendMode.NORMAL, 0xa8c6ee, 1.0, BlendMode.NORMAL, 0);

//当选择部分不在焦点容器内但是位于活动窗口中时,用于绘制选择的 SelectionFormat 对象。selectionManager.unfocusedSelectionFormat = new SelectionFormat(0xe8e8e8, 1.0, BlendMode.NORMAL, 0xe8e8e8, 1.0, BlendMode.NORMAL, 0);

2、通过TextConverter.importToFlow(html, TextConverter.TEXT_FIELD_HTML_FORMAT) 得到的textflow,不能改变color这样的属性,如果要改变这些属性,只能通过导入纯文本,然后设置样式。

3、让光标定位到文本最后textflow.interactionManager.selectRange(textField.tf.getText().length,textField.tf.getText().length);textflow.interactionManager.setFocus();

4、若显示区域小于文本总长度,通过滚动的方式,让显示区域显示对应的文字。_container.verticalScrollPosition 属性改变垂直滚动位置,

5、TextLayoutFormat  lineHeight属性:表示行高合法值为 -720 到 720 范围内的数字。合法值为 -1000% 到 1000% 范围内的百分比数字。合法值包括 FormatValue.INHERIT。默认值未定义,指示未设置。如果在层叠期间未定义,则此属性将从一个祖代继承值。如果没有祖代设置了此属性,则其值为 120%。

6、TextFlow 深拷贝

var copiedTextFlow:TextFlow = textFlow.deepCopy() as TextFlow;

var someOtherTextFlow:TextFlow = new TextFlow();

someOtherTextFlow.replaceChildren(0, someOtherTextFlow.numChildren);

while (copiedTextFlow.numChildren){

// in order builds this is a little more complicated (psuedo code here you will have to debug it)

// var child = copiedTextFlow.getChildAtIndex(0);

// copiedTextFlow.removeChild(child);

// someOtherTextFlow.addChild(child)

someOtherTextFlow.addChild(copiedTextFlow.getChildAtIndex(0));

}

7、得到textline的方式

var flow:TextFlow = tArea.textFlow; var composer:StandardFlowComposer = (flow.flowComposer as StandardFlowComposer);  var tfline:TextFlowLine = composer.getLineAt(composer.numLines-1); var line:TextLine = tfline.getTextLine();

var factory:StringTextLineFactory = new StringTextLineFactory(); factory.compositionBounds = rect; factory.createTextLines( useTextLines ); function useTextLines( line:DisplayObject ):void { }
var factory:TextFlowTextLineFactory = new TextFlowTextLineFactory(); factory.compositionBounds = new Rectangle(0,0,w,h); factory.createTextLines(callback,textFlow); function callback(tl:TextLine):void { }     8、通过导入htmltext生成textflow的方式,设置TextLayoutFormat属性无效。因为直接改变这些属性也是设置html标签,不过是套在最外层,只有通过选中某部分,然后通过EditManager来改变才有效。var pa:TextLayoutFormat = new TextLayoutFormat();pa.color = 0x0000ff;_em.selectAll();_em.applyLeafFormat( pa, _em.getSelectionState() );

9、如何在缩小放大时自适应行高?

10、如何复制图片?

还有一些问题没弄懂的,,一定得仔细看看源码才行呀!!!

转载于:https://www.cnblogs.com/blogonfly/articles/3567397.html

TLF(TextFlow) 总结-FLEX相关推荐

  1. Maven下Flex国际化配置

    之前写了flashbulid.initellij下的flex国际化配置,它们都是在本地打包发布的,那么我们的工程用maven管理了,需要自动发布.这时候如何修改flex的pom文件,来让它build的 ...

  2. Flex移动皮肤开发(一)

    范例文件 mobile-skinning-part1.zip Flex 4.5提供的移动增强的皮肤特性,支持触摸交互.性能优良,并且考虑到了内存占用问题.尽管目前市场上有不少性能优异的设备,但典型的S ...

  3. Flex App的Size和Link报告

    Flex App的Size和Link报告 0 Flex编译器参数: -size-report 和 -link-report 编译参数 Flex编译器提供了一系列的编译器参数帮助我们定制应用编译过程.F ...

  4. Flex移动皮肤-第一部分:增强的皮肤功能基础

    Flex 4.5提供的移动增强的皮肤特性,支持触摸交互.性能优良,并且考虑到了内存占用问题.尽管目前市场上有不少性能优异的设备,但典型的Spark皮肤(包括Flex 4引入的默认皮肤)却没有能够在移动 ...

  5. flash/flex基础发展区别等

    原文地址:https://blog.csdn.net/xygg0801/article/details/53323136 很好的一篇文章 博主总结了很多资料 本文和大家重点讨论一下Flex和Flash ...

  6. Flex和Flash的区别和联系

    本文和大家重点讨论一下Flex和Flash的区别和联系,Flex也继承了Flash在表示层上先天性的美感.除了视觉上的舒适感外,还天生具备方便的矢量图形.动画和媒体处理接口.虽然Flex和Flash有 ...

  7. Flash, Flex, Air, Flashplayer之间的相互关系是什么

    Flash, Flex, Air, Flashplayer之间的相互关系是什么? 著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:曾嵘 链接:http://www.zhi ...

  8. Flash, Flex, Air, Flashplayer之间的相互关系是什么?

    著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:曾嵘 链接:http://www.zhihu.com/question/20001256/answer/15565376 ...

  9. 【转】Actionscript,AS3,MXML,Flex,Flex Builder,Flash Builder,Flash,AIR,Flash Player之关系

    标签: Actionscript AS3 MXML Flex Flex Builder Flash Builder Flash AIR Flash Player   ActionScript Acti ...

  10. ActionScript,Flash,Flash/Flex Builder,FlashPlayer,AIR,swf,swc,swz之间的区别

    原文链接:http://zengrong.net/post/1295.htm ActionScript ActionScript通常简称为AS,它是Flash平台的语言.AS编写的程序,最终可以编译成 ...

最新文章

  1. java线程暂停与恢复suspend和resume
  2. 100元左右的鼠标推荐
  3. 【转】jsp+servlet和SSM分别是如何实现文件上传(示例)
  4. mysql tb_Mysql数据库分库和分表方式
  5. vue.js ajax怎么用,vue.js中ajax的使用
  6. Premiere Pro CC2017软件安装资料及教程
  7. AspUpload实时上传进度的AJAX方法
  8. 隐藏隧道通信:lcx 端口转发
  9. 浅谈功能测试-->自动化测试
  10. 飘窗利用如何改造 6个实用设计包你满意
  11. python寻找完全平方数_279 完全平方数(bfs)
  12. 【复现】CNVD-2020-10487-Tomcat-Ajp-lfi
  13. ResNet论文翻译——中文版
  14. 微擎跳过云平台_2018年10月微擎安装之阿里云懒人教程篇
  15. Python While循环与break语句_加工零件
  16. C#练习题答案: 图片#1 - 重建巴别塔【难度:1级】--景越C#经典编程题库,1000道C#基础练习题等你来挑战
  17. HTML的基础入门,快来看看吧~
  18. 下列HTML标签是段落标签的是,HTML段落标签
  19. java集成华为推送
  20. 训练softmax分类器实例_一个值得深思的问题?为什么验证集的loss会小于训练集的loss...

热门文章

  1. 数据库系统原理与应用教程(031)—— MySQL 的数据完整性(四):定义外键(FOREIGN KEY)
  2. Linux-unbuntu修改apt源
  3. el表达式中三元表达式
  4. Godaddy域名注册详细图文教程(转)
  5. 成功解决http error 503.the service is unavailable错误
  6. Xenu Link Sleuth
  7. 想要成为大牛应该做到以下几点
  8. 非转基因保护品种覆盖南北 北方旱作国稻种芯-517功能苦瓜稻
  9. GC overhead limit exceeded 的解决方案与详情分析
  10. 为什么苹果日历不能设置日程_苹果自带日历hold每日待办日程提醒不再轻易miss日程...