论坛首页 编程语言技术论坛

JAte编辑器 0.1 alpha。

浏览 12010 次
精华帖 (0) :: 良好帖 (16) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-05-14  
偶的 flash 10 打不开
0 请登录后投票
   发表时间:2009-05-21  
Army 写道
trains629 写道
看样子flash对html支持的还是不好啊,有测试过大文件吗?

有关超长文本的正好要说一下,一开始的效率不太好,重写过后改善很多,不过一定程度上依赖文本的复杂度。

flash的textfield中字体样式相关是这样的,每个字符都有一个textformat对象,可以根据索引取得,所有字符字体信息都在这个format对象里,要设定颜色、大小、字体、对其、粗体、下划线等等一切都是如此。

所以这样就涉及到一个问题:如果一次性设置很多字符串,比如100个,那就要对100个字符进行遍历,取得每个的format,然后修改,然后再存回去。这个速度之慢是相当恐怖的,一下子浏览器就卡死了。慢并不慢在遍历,我前面也说过了,遍历10w字符串也就几十ms,慢在存取和修改format对象上。

后来由于要写命令链里的FormatSelectCommand命令,就优化了算法,具体是:如果选择了一段文本,则先得到首尾索引,然后去textfield的htmlText中转换为相应的html索引。这就得到了这段字符串在html中的相应字符串,接下来就是难点。

比如html中是这样的:“test1</b>test2<u>test3<i>test4</i></u>test5”,在html中是分为5个区段,而在textfield中则是25个字符。其实这25个字符分为5个区段,每个区段的format是一样的,于是根据html中取出来的区段索引,转化为text的正常索引,再进行存取设置,如此性能就大大提升了。

这样的话,哪怕你选择1w个字符,只要它们拥有相同的format,也只进行设置一次而已,所以速度和设置1个字符几乎没有区别。但是也有这种情况:就是那种区段很多的字符串,比如每个字符故意设置为不同的颜色,那速度就是慢得狠了。不过我想很少有人会干这种事情吧……

如此一来,区段出来了,FormatSelectCommand也就水到渠成了,记录下区段索引和内容,存到命令链里就够了。值得注意的是,设置区段format之前要比较一下,因为很可能选择的字符串里面已经有某些部分是和要设置的一样的,比如要变成红色,而本来字符串中有红色,而这部分一是无需设置的,二是不能存到命令链中,否则在undo和redo时就会出错。


可以单独建立一张关系的图,这样通过这样索引图去渲染你的样式就方便多了,效率也高,也就是第一次先搞定做什么,第二步再搞定做的事情.不过dom的话还是少用递归,可以参阅下sax的做法,那个比较科学dom的速度慢是有目共睹的.
0 请登录后投票
   发表时间:2009-05-21  
不太明白……
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics