kanzi:如何运用状态机(1)

今天来说说kanzi中的状态机。

但是如何去创建,如何用其实doc中已经说的很详细了,废话就不说了,今天主要说说平时遇到应该注意的地方。


1.状态机可以满足我们很多的UI需求,现在说一种实现简单的序列帧。比如wifi信号,连接的时候信号闪的情况。

类似这种简单的动画,如果用动画,我们还要在程序中控制动画的开始和结束,但是如果使用状态机实现,那么简单多了,最多设一下属性即可。

首先我们和一般的状态机一样录状态,然后呢,给个变量,记录这些状态后我们就实现这种动画效果。然后将这个属性添加到此节点。


在我们录制状态的那个节点trigger中添加一个动作:onproperty change,意思就是一个东西边而去改变另外的东西。添加完成,ok,该实现这种动画效果了。

下来其实就简单了,点开刚刚添加的动作,按照提示先添加前提,如果某个属性是什么,或者某个message。而在这里比较简单,当我们此节点的状态如果=某个值,那么添加前提条件就玩了,然后,我们再添加一个动作,意思就是此属性变化,那么我们要修改某个属性。我们添加一个setproperty,将下一个状态设置好即可。注意后面有个延迟。为了动画效果,我们设置1000ms即1s一变。如此,将所有的状态按照顺序全部添加后就会形成类似一个循环。比如:信号从0到1,从1到2,从2到3,从3到4,从4再到0.

要是这一步ok,那么这个已经完成了。


扫描二维码关注公众号,回复: 126853 查看本文章

我们试着改变此节点添加的那个变量试试。


2.如果我们在一个button上添加了一个状态机,但是有一个类似的button也要用到状态机怎么办,其实很简单,在此button上添加一个属性state manager,然后将需要的状态机添加进来即可。而这两个状态机实际就类似与我们的对象类型(比如:int),而你的这两个button就类似对象,变量,其实互不干扰。所以你设置某一个的状态并不影响另外一个。


3.在状态机中我们也可以实现简单的动画效果。这中操作就不说了,你只需要添加transitions动作即可,这个东西看了就知道怎么用,所以就不多说。但是我现在主要说一点,如果你的状态机在你的一个根节点中(比如你在模版中有用到),那么你可能做完这项工作的时候发现没有动画效果,没有达到你预计效果。那么不用担心,不用做很多,在你根节点下创建一个节点,将动画效果添加到此节点(如果已经录好,直接添加state manager),然后试试,发现有了,所以这种动画效果最好不要用到根节点上。


4.其实状态机的变量属性,kanzi也帮我们做了一些,比如,你在点击button的时候,不用自己创建属性,再去设置属性值,直接用button的isdown属性更简单。


5.在transitions中其实如果自己设置,点击右边图标,想怎么设就怎么设,想怎么添加就怎么添加。


现在想到的就这么多,简单的大家都会,就不过多说,以后遇到需要注意的再写

猜你喜欢

转载自blog.csdn.net/allen807733144/article/details/73740521