小玩意系列合集地址:
https://gitee.com/ruanwujing/green-pack-cocos
之前封装了一个拖拽组件后,突然想到一个额外的常用效果,拖拽失败时,经常会有一个反馈动作,比如item震动:

然后我想要将这个效果封装进拖拽组件时,我产生了一种很不舒服的感觉。
因为这个效果不是一个很固定的效果,对于同一个游戏,失败反馈可能是震动,可能是闪烁,也可能是一个特效。
我决定不将这个效果封装进去,而是通过外部代码控制修改的方式来实现。
这时就产生了一个问题,我需要在拖拽失败弹回效果之前先执行一个我自己定义好的效果,等这个效果的时间过后,再执行弹回动作。
这种有时间消耗的步骤,一向是比较难插入其它操作的。
最终,我决定封装一个简单的工作流
工作流和状态机的区别?
我的理解是,工作流是不需要外部事件驱动的,启动之后,它会自动从头节点一直运行到一个叶子节点。而状态机是可以一直停留在某个状态中,直到用户执行某些操作才跳出改状态。
使用方式
1创建一个工作流
2在update中update工作流

3为工作流创建赋值一个头节点(根据具体需求赋值OnStart OnUpdate OnEnd函数)

4从头结点开始,赋值搭建起一棵节点树

5启动工作流

分支节点跳转:

工作流节点结束时调用done,可以指定切换到某个分支子节点
默认时切换到节点数组中的0号。
拖拽组件整改使用工作流执行弹回效果后,这时加入一个失败时先震动的效果,只要往它的工作流头部插入一个自己定义的震动工作流节点:
