继承自 ActionInstant 类的动画为瞬时动画,这种类型的动画执行的动作在一帧内完成,通过ActionInstant的函数isDone来判断。所以,当动画管理器判断这个条件为真后,直接删除该动画。
瞬时动画有好多种,既包括前面介绍的 Show、Hide 和 Place,还有删除自己动画RemoveSelf、回调动画 CallFunc、翻转动画 FlipX 和 FlipY 等。对于这类动画,节点类提供相应的函数来实现,但为了和延时动画一起执行,以动画的形式存在。
可见性动画有 3 个:Show、Hide 和 ToggleVisibility。Show 执行后的结果是让节点显示,Hide反之,而ToggleVisibility动画执行的结果是如果该节点原来是可见的,那么就隐藏它,否则显示它。可见性动画的动画使用如程序片段3-3所示。
程序片段3-3 可见性动画的使用代码
翻转动画包括两个:FlipX 和 FlipY。FlipX 是在水平方向上翻转节点;FlipY 是在垂直方向上翻转节点,使用情况如程序片段3-4所示。
程序片段3-4 翻转动画使用代码
对于create函数的bool类型参数,当传递参数为true时,执行相应的翻转,否则和没执行动画状态一样。这个地方有一点要注意,如程序片段3-5所示。
程序片段3-5 翻转动画使用代码
程序片段 3-5 演示了 pSprite 节点执行的动画,先延迟 2s,执行水平翻转,然后又延迟2s,同样执行水平翻转。对于 pFlipX1 动画,节点的状态和没翻转之前的对照是,在水平方向上进行了翻转;对于 pFlipX2 动画,同样在水平方向上执行了翻转,只是这时的节点状态和原始状态一样。所以说不管create函数中的参数为true或者false,如果节点在翻转时,状态和之前不同,则都会执行翻转动画。只是为true时,翻转后的状态和初始节点不一样;为false 时,和初始节点的状态一样。关于 Sequence 和 DelayTime 动画,将会在后面的小节中介绍。
对于翻转动画的理解,如图3-2所示。
图3-2 翻转动画效果图
图3-2中,左边的图片是原图,中间的图片在水平方向上执行了翻转,右边的图片在垂直方向上执行了翻转。
回调动画是一个回调函数,执行到该动画时,会去执行指定函数中的代码。这类动画有两种类型:CallFunc 和 CallFuncN,后者继承自前者。而这两者的区别是,后者的回调函数有一个类型为 Node 的参数,该 Node 为该动画的执行者,而前者没有参数。这类动画的使用如程序片段3-6所示。
程序片段3-6 回调动画的使用代码
其中,函数callback1和callback2是回调函数。
Place动画的功能同调用节点的setPosition函数的功能一样,在Place的update函数中可以看到代码,如程序片段3-7所示。
程序片段3-7 Place动画的定时器函数
对于这个动画的使用,如程序片段3-8所示。
程序片段3-8 Place动画的使用
函数create的参数用于指定设置节点的新位置。
RemoveSelf 动画的执行结果是直接把执行的节点删除掉,它带一个 bool 类型的参数,当为true时,动画执行完成后执行cleanup操作,否则不执行该操作。cleanup操作是删除该节点的所用动画和定时器。这类动画的使用如程序片段3-9所示。
程序片段3-9 RemoveSelf动画的使用代码
上面介绍的几个是瞬时动画中常用的,对于这类动画还有网格重用动画 ReuseGrid、停止网格动画StopGrid等。