发表于: 2018-12-09 22:05:49

2 856


今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin) 

今天使用了状态机,了解了状态机如何使用以及相关内容:

//状态机创建
var fsm = new StateMachine({
//初始状态
init: 'dog',
//绑定事件
transitions: [
/*
     form:当前行为从哪个状态来
     to:当前行为执行完会过渡到哪个状态
     name:当前行为的名字
     */
{ name: 'flowers',  from: 'dog',  to: 'love' },
{ name: 'confession', from: ['dog', 'love'], to: 'together'    },
{ name: 'propose',  from: ['love','together'],    to: 'marry' },
{ name: 'separate', from: '*', to: 'dog'  }
],
//结合声明周期方法,解释上面实例中的methods属性中的方法:
methods: {
//onEnterState 当进入任何状态时触发
onEnterDog: function() {main.innerHTML = '万年单生狗';},
onEnterLove: function() {main.innerHTML = '友人已满,恋人未达';},
onEnterTogether: function() {main.innerHTML = '亲密恋人';},
onEnterMarry: function() {main.innerHTML = '结婚';}
}
})
console.log(fsm.state);
//状态转换
flowers.onclick = function() {
// fsm.state 获取当前状态机对象fsm的状态
switch(fsm.state) {
//改变状态机状态的几个过渡方法
case "dog":fsm.flowers();
break;
case "love":fsm.confession();
break;
case "together":fsm.propose();
break;
default:
alert("已经结婚就不要在送花了");
}
console.log(fsm.state);
}

有限状态机:

简单说,它有三个特征:

  * 状态总数(state)是有限的。
  * 任一时刻,只处在一种状态之中。
  * 某种条件下,会从一种状态转变(transition)到另一种状态。


获得的效果如下:

有限状态机会判断事件处于哪种状态,比如我的示范代码中写的

/*
     form:当前行为从哪个状态来
     to:当前行为执行完会过渡到哪个状态
     name:当前行为的名字
     */

就是描述事件的状态,从哪种状态到另一种状态。

跑了一个demo,明天使用状态机写杀人天数。第一天干了什么,第二天干了什么。

明天计划的事情:(一定要写非常细致的内容) 

明天使用状态机写杀人页面。第一天干了什么,第二天干了什么,并且杀人页面不能选中一个之后,再次点击不能跳转。


遇到的问题:(遇到什么困难,怎么解决的) 

遇到一个问题:就是我是用location.href跳转的时候,能不能不用状态机,自己写if,来实现点击选择杀死的角色之后,回到选择页面,第一天,第二天的页面再次点击不能跳转。我之前用的if,想通过判断选择角色页面返回参数是否为空来判断是否进行跳转,但是点击依旧跳转,之前用的location.href,想问下师兄之后怎么处理,让location.href不跳转

收获:(通过今天的学习,学到了什么知识)

学习了状态机,跑了demo



返回列表 返回列表
评论

    分享到