首页 > 解决方案 > 如何在没有状态的情况下进行撤消/重做?

问题描述

我正在开发一个使用 KSP 的示例库乐器,我怀疑这里的任何人都知道它是一种非常基本且有限的语言。

我试图弄清楚如何实现一个撤消/重做系统来与我的 UI 交互。我已经有一个预设系统设置,它使用我为每组 UI 元素声明的“last_value”数组。这很好用,因为它只需要记住每个 UI 控件收到的最后一个活动值更改。

因此,在保存和加载预设时,我只需将所有当前 UI 值保存到主预设数组,或者加载并应用保存的数据文件数组中的所有值。但是我将如何考虑所有已进行的编辑历史?仅将值保存到第 x 个最大撤消步骤是一回事,但我还必须记住哪个 UI 控件以哪个顺序触发?

我是一个初学者,不知道任何其他语言,所以我的脑袋现在正在冒烟,试图设想如何真正做到这一点。

我很感激任何提示和建议!

标签: undoundo-redo

解决方案


推荐阅读