[英]Hierarchical state machines for 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规范紧密对齐的方式支持交替状态(状态,伪状态和最终状态)和区域的层次结构。 这是该项目的早期阶段,但基础知识在那里。
我知道这是一个老问题,但您可以查看基于可以设计HSM的jQuery的iFSM库: https : //github.com/intersel/iFSM
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.