JavaScript 的分层状态机
Hierarchical state machines for JavaScript
我对分层状态机非常感兴趣,尤其是在JavaScript中,我发现了这个框架,喜欢它的外观。但是我不确定它是否可以执行分层操作。
有没有人知道已经有层次结构状态机的解决方案?
如果你想要类似本文中描述的模式,看起来你链接的框架可以做到这一点:
状态机类
您还可以通过将状态机功能应用于原型(包括原型中的回调)并提供启动事件以在构造实例时使用,将类的所有实例转换为 FSM:
MyFSM = function() { // my constructor function
this.startup();
};
MyFSM.prototype = {
onpanic: function(event, from, to) { alert('panic'); },
onclear: function(event, from, to) { alert('all is clear'); },
// my other prototype methods
};
StateMachine.create({
target: MyFSM.prototype,
events: [
{ name: 'startup', from: 'none', to: 'green' },
{ name: 'warn', from: 'green', to: 'yellow' },
{ name: 'panic', from: 'yellow', to: 'red' },
{ name: 'calm', from: 'red', to: 'yellow' },
{ name: 'clear', from: 'yellow', to: 'green' }
]});
这应该很容易调整,以适应您适当的对象构造机制。
换句话说,在这一点上,你应该能够做通常的JavaScript继承的事情,比如:
function MyCalmFSM() {
MyFSM.apply(this, arguments);
}
MyCalmFSM.prototype = Object.create(MyFSM.prototype);
MyCalmFSM.prototype.constructor = MyCalmFSM;
// Don't panic
MyCalmFSM.prototype.onpanic = function(event, from, to) { alert("Don't panic"); }
看看: https://github.com/steelbreeze/state.js
它支持交替状态(状态、伪状态和最终状态)和区域的层次结构,其方式与 UML 2.x 规范非常一致。 该项目还处于早期阶段,但基础知识已经存在。
我知道
这是一个古老的问题,但你可以看看基于jQuery的iFSM库,它可以设计HSM:https://github.com/intersel/iFSM
相关文章:
- 事件和状态
- 获取选择框的状态
- 相位器状态未捕获参考错误
- 如何更改reactjs中外部/独立组件的状态或属性
- 如何使用密码检测网络中的状态连接
- Ember.js-接口状态应该存储在哪里
- Getconnection()不适用于状态机
- 为什么这个简单的函数不能在这个javascript状态机中的这个对象上运行
- 反应本机,错误地设置状态中的项目值
- 在反应本机中更新状态需要很长时间
- 设置状态 [反应本机] 后无法编辑输入文本
- JavaScript 的分层状态机
- 从列表视图传递 React 本机状态
- 实现用于 JavaFx2.0 游戏框架的简单状态机
- javascript状态机onafterevent是't被叫
- 流星状态机
- 当抛出错误时,反应本机提取无法设置状态
- 如何将json的上下文无关语法转换为状态机
- 从服务器代码(和状态)更新客户机浏览器中的画布元素
- 这是唯一标识从Ajax到Servlet请求的客户机状态的最佳选择