您的位置:首页 > 其它

Undo/Redo几种实现方式介绍(五)——两个需要讨论的问题

2017-11-12 19:57 357 查看
上述几种实现Undo/Redo的方式都不能避免的涉及到下面问题。 1)是否需要无限undo/redo 所谓无限undo/redo是指从用户开始编辑到结束编辑过程中的所有操作都被记录在案,用户可以通过undo/redo操作将窗口状态恢复到任意时刻。 前面给出的例子都不是无限的undo/redo,当用户进行下一步的编辑后,程序会将redo缓冲区清空。目前的主流软件都是类似的操作。在word还有一些其他软件中,当键入新的内容之后,redo操作只会重复你现在的操作。原先的都被清空掉了。 之所以无限undo/redo应用比较少,我认为原因有一下几点:a)太耗费内存,加入有个10M的图片,每次对这个图片操作之后都会在undo/redo记录中留下一份记录,那么内存会被耗费的很多,但是如果在每次记录用户操作的时候都把redo缓冲区清空的话,就会节省很多内存;b)很少有用户会一直进行undo/redo操作,如果说undo是用户之前操作错误,才会进行undo操作把错误操作撤销,那么redo就意味着用户认为他自己撤销操作的操作是错误的,这种错误发生的几率比较小,所以不需要一直保存redo内容。 2)是否记录所有的改动 在信息编辑窗口中,用户的操作虽然改变了某些属性值,但是这些属性值的变化并不会在信息编辑窗口中直接体现出来,也就是说用户改变了某些属性值,但是信息编辑窗口中没有什么变化。这时就需要考虑是否对这些属性的变化进行undo操作记录。 如果不记录,则会给用户误导,用户会认为在点击undo的时候会将这些属性值恢复为原始值,但是实际上并没有恢复。如果记录这种操作,当用户点击undo按钮的时候,信息编辑窗口界面并没有发生变化,这样会使用户产生疑惑:undo按钮到底有用没有,是不是时灵时不灵。 一种折中的方法是将undo记录分为明操作和隐藏操作,如果用户的操作使信息编辑窗口发生变化,则此操作是明操作,反之为隐藏操作,当用户进行undo/redo操作的时候,程序会一直undo或者redo到下一个明操作,期间夹杂的隐藏操作都自动执行undo/redo操作。 关于undo/redo操作就是这些内容了,当然除了这几种方法肯定还有会其他方式实现类似操作,如果以后发现其它实现undo/redo的方法我会继续添加。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐