has*_*hmi 10 javascript php undo redo
我想实现Undo和Redo功能,不仅适用于客户端,也适用于服务器端.对于insatnce我有一个div包含图像,我可以旋转调整大小并重写它,图像生成的所有基本操作.并且所有操作都会更新数据库和图像.您可以说我的图像正在重新生成,并且每次操作后都会更新数据库.
现在我需要实现撤消和重做功能.我也做了一些研究.我需要的是如何实现所需任务的最佳方法.我正在考虑维护每个动作"日志类型的东西"或用数据库或javascript数组包括HTML或其他什么来处理它?
什么是实现我的目标的最佳方法.
谢谢,
Gra*_*ham 24
在基础层面,您需要两件事:
一个操作堆栈(数组),它跟踪已执行的操作.当用户执行操作时,您将创建一个描述操作的对象并将其添加到阵列中.当用户点击撤消时,您可以从阵列中删除最后一项.
每种操作类型都需要"保存"方法和"撤消"方法.这可能会变得棘手,因为一些'撤消'方法类似于他们的'保存'方法(即撤消水平翻转你只是做另一次翻转),而其他人没有这种对称性(即撤消你需要的裁剪)存储作物发生前的图像数据).
如果您想要'重做'功能,那么您需要第二个操作堆栈.每次撤消操作时,都会将其添加到重做堆栈的末尾.如果用户点击"重做",则再次将其移回操作堆栈.
查看Command模式(http://en.wikipedia.org/wiki/Command_pattern)可能会有所帮助,因为这通常用于实现撤消.
我的javascript撤消管理器使用命令模式。基本上,对于每个操作,您还执行撤消操作和重做操作。您可以在服务器端构建相同的功能。
https://github.com/ArthurClemens/Javascript-Undo-Manager
这是命令模式的清晰代码示例:https : //github.com/shichuan/javascript-patterns/blob/master/design-patterns/command.html