Rya*_*yan 8 javascript state-machine
我一直对分层状态机特别感兴趣,特别是在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' }
]});
Run Code Online (Sandbox Code Playgroud)
这应该很容易调整以适应您适当的对象构造机制。
换句话说,此时您应该能够执行通常的 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"); }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2973 次 |
| 最近记录: |