20分钟创建基于Flex的Text Editor
选择开源文本编辑器如TinyMCE、FCKeditor,当然是不错的选择,但定制自己的Text Editor也不困难。最近使用Flex开发Editor,研究了一下Flex自带的RichTextEditor,发现其工作原理非常简单。为了研究其工作原理及不足,我使用两个核心类自定义了一个Editor,效果图见附件。欢迎拍砖。
目标:用Flex定制自己的Text Editor
功能:字体,大小,粗体,斜体,下划线,列表(Bullet),对齐方式(Alignment),字体颜色。
开发环境:Flex Builder 3
简介:
熟悉《设计模式》一书的开发人员都知道,此书从文档编辑器(document editor)展开讨论,引出数十种设计模式。本文对此不作讨论,我们所关注的是如何实现文档编辑器本身。更深入更复杂的例子,可以参考Jexi(参考价值更大,但没有实现Table),TinyMCE。
相关内容:
核心类--TextField和TextFormat
TextField和TextFormat是实现文本编辑器的核心部件。TextField包含了文本的输入、显示和格式化功能,还有光标、选中(selection)处理。TextField是DisplayObject,可以作为子元素添加到Container上。TextFormat是Util类,负责表示用户设置的格式(Style)。
事件处理
用户交互,少不了事件处理。TextEvent类专门用于处理和Text相关的事件,例如用户键盘输入或点击一个超链接(Link)。除了TextEvent,还需要处理一些自定义的事件,例如文本区域的内容、格式改变。
如何创建:
1.新建Flex Application,工程命名为test。
2.新建MXML Component,基类是Panel类。
声明Event
添加ControlBar,编辑工具条
3.在test.xml引用该组件
注意,我们为Panel和ControlBar添加了样式(Style)。
问题和不足:
上述自定义Editor基于RichTextEditor(基于TextArea),有兴趣的读者可以研究它们。本文探讨如何实现简易的文本Editor。真正的Editor,包含很多类型的图元编辑,例如文本、图像、表格。由于TextField和TextFormat仅限于文本功能,因此要实现图像和表格编辑,还有很多的工作要做,甚至要抛弃TextField和TextFormat,设计一套基于Glygh的图元渲染系统。限于篇幅,不再进一步讨论。