About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Jan

    27

    Feathers3 TextBlockTextEditor 一些备注

    • 0 Comments
    • Flash Platform
    • 发布:古树悬叶
    • 引用:0
    • 浏览:

    TextBlockTextEditor 使用 Flash Text Engine 显示文本,这是一个基于软加速的矢量字体渲染器,具有许多高级功能。可以使用设备字体或嵌入的字体(TTF 或 OTF 格式)。flash.text.engine.TextBlock 被 draw 到一个 BitmapData 对象,然后转换成 Starling 纹理图提交到 GPU 。这个文本编辑器与 Starling 是“深度整合”的,这意味着当文本编辑器聚焦时,不会像 StageTextTextEditor 那样出现“叠加”效果。

    (有一个“快照”的概念:这个快照大概意思是基于软加速的矢量文本,即使没有出现在原生舞台的显示列表上,也一样可以被 draw,然后 BitmapData 会直接转成 Starling 所需要的纹理格式上传至 GPU 更新文本编辑器的纹理,这是深度整合的原理,我猜的,你猜我猜的对不对?

    优缺点:

    Flash Text Engine 可以使用设备字体显示文本,对某些具有很多字符轮廓的语言(如中文),当嵌入字体需要太多内存时,设备字体就可能成了唯一的选择。Flash Text Engine 可以很好的支持从右向左排版的文字或双向文字,而 flash.text.TextField 就有可以无法正常显示。

    由于 Adobe AIR 运行时的功能限制,此文本编辑器不能在移动设备上使用。当文本对象获取焦点时,Adobe AIR 没有提供 API 可以调用 iOS 的软键盘功能,此文本编辑器仅适用于桌面应用开发。

    更改基于矢量的文本对象比使用位图字体要慢,因为矢量内容需要被 draw 到一个 BitmapData 对象,然后提交到 GPU 才能成为 Starling 显示的纹理图。如果用户输入较长的文本内容,在性能比较低的设备上转换成为纹理图、并上传纹理到 GPU 的时间可能会成为性能瓶颈。

    因为每段矢量文本需要被绘制到 BitmapData 对象,每个独立的渲染器在 GPU 上都需要一份单独的纹理图。如果在同一个屏幕上有多个 TextBlockTextEditor 实例,过的状态改变或 Starling 的渲染 / 绘制请求,可能会影响性能。

    Flash Text Engine 有时可能会比 flash.text.TextField 渲染的慢一些,一般来说,这种性能差异是可以忽略的,并且 FTE 引擎提供的更高级功能通常比牺牲一点点性能更划算。

    高级字体样式:

    该部份备注资料直接参考《TextBlockTextRenderer 一些备注》(是一样的)。

    一个文本渲染器的父组件有多个状态,如何更改它的高级字体样式:

    该部份备注资料直接参考《TextBlockTextRenderer 一些备注》(是一样的)。

    使用嵌入字体:

    该部份备注资料直接参考《TextBlockTextRenderer 一些备注》(是一样的)。

    • Tags:
    • 2017 / 1 / 27
    相关文章:
      Post Comment.

      发表评论