官方文档:Command
Command是一个Cesium的核心类,它允许您创建可撤销/重做的操作,提供了一个统一的接口来处理与操作相关的状态、撤销和重做操作,以及执行操作时应采取的实际操作。
创建一个Command
对象需要继承它,并且实现四个方法:
execute
- 执行操作undone
- 撤销操作redo
- 重做操作isIdenticalTo(otherCommand)
- 判断两个命令是否相等如下所示:
class MyCommand extends Command {
constructor(argsToExecute) {
super();
this._argsToExecute = argsToExecute;
}
execute() {
// 执行操作
}
undo() {
// 撤销操作
}
redo() {
// 重做操作
}
isIdenticalTo(otherCommand) {
// 判断是否相等
}
}
然后,可以使用MyCommand
对象创建新的命令、执行命令、撤销命令、重做命令:
const command = new MyCommand(argsToExecute);
command.execute();
command.undo();
command.redo();
Command
将跟踪一些状态:
const command = new MyCommand(argsToExecute);
class MyCommand {
constructor() {
this._canExecute = true; // 是否可以执行
this._error = null; // 执行过程中的错误
this._haveExecuted = false; // 是否已经执行
}
execute() {
// ...
this._canExecute = false;
this._haveExecuted = true;
}
undo() {
// ...
this._haveExecuted = false;
}
redo() {
// ...
this._haveExecuted = true;
}
}
Command
允许您执行撤销和重做。你可以这样使用:
const command = new MyCommand(argsToExecute);
command.execute();
command.undo();
command.redo();
您可以使用canExecute
属性来确定命令是否可以执行操作。
Command
提供了一些方法来处理操作状态和状态的重置:
queryCanExecute
— 询问当前操作是否可以被执行getLastError
— 获取最后一次执行操作时发生的错误resetStatus
— 重置所有状态Command
对象提供了一个isIdenticalTo(other)
方法,用于比较其可以执行的状态是否与另一个命令相同,以便确定它们是否相等。这个方法的默认实现会比较参数、命令构造函数和类名。这在用于比较基于对象的命令,例如替换颜色的命令时是非常有用的。
Constructor()
— 构造函数execute()
— 执行操作queryCanExecute()
— 询问当前操作是否能被执行redo()
— 重做已经被撤销的操作resetStatus()
— 重置所有状态undo()
— 撤销已经执行的操作getLastError()
— 获取最后一次执行操作的错误isIdenticalTo(other)
— 比较命令对象Command
提供了一种直观的方式来创建可撤销/重做的操作。使用它,您可以创建自己的命令,并轻松进行状态管理和执行操作。