Skip to content


Hello Actions 2

先前看完了Sprite的结构, 再来看一下实际的Action.

所有的Action都是在IntervalAction.h里面定义的, 打开这个文件,可以看到HelloAction示例里面的几个action, 先来看一下整体结构再来逐一看他们的介绍:

每个Action都有一个共同的基类, IntervalAction,而这个IntervalAction又是继承自FiniteTimeAction, FiniteTimeAction继承自Action, Action类是顶层类, 自上而下,先来看这个Action类.

Action是所有actions的基类, 这个类包含两个属性,一个是target, 指明action是作用于谁, 另一个是tag,用于标示这个Action,这一点有些想UIView的tag. 主要的方法有start/stop/step:dt/update:time/isDone, 该类用作抽象基类. 再看FiniteTimeAction.

FiniteTimeAction, 顾名思义, 就是在Action的基础上添加了一个时间限制, 另外还提供了Action倒放(reverse)接口, 不过这个接口是个空函数,需要下面的子类来实现,所以说这个类还是个抽象类. 只是Action类的一层非常薄的包装.接下来是真正能干活的类,

IntervalAction真正定义了一个基本的Action, 包括起始/结束时间, 速度等等.它主要提供了基于时间的callback, reverse方法还是没有实现, 基本的Action不是可用的Action.

Actions里面起始还可以再分为两类,一类是真正的action比如RotateBy 比如JumpBy 这些真正做出一个动作的Action,另一类更像一个组合的概念, 把这些单一的动作组合起来,做成一个连贯的Action,比如Spawn ,比如Sequence.和Repeat.这两类动作都可以直接作为Sprite类runAction的方法传给Sprite.

有了这些了解, 再详细的看每个action就简单了.

  • 首先看这个RotateBy ,注释里面说只要是XXBy的指的是相对的, XXTo的指的就是绝对的, 先不管什么意思,进去看看再说.

RotateBy就是”相对”目前的状态, 顺时针方向转多少度; 再看上面的那个RotateTo,估计就是直接转到一个绝对的度数. 两个类有着相似的用法, 都可以简单的调用一个类方法, 指定两个参数来完成相应的操作. 这回知道By和To的区别了.

  • JumpBy ,actionWithDuration 依然是持续时间, 单位为秒,position 是结束的点,height 是跳其的高度,jumps 定义跳几次,至于每次跳多远是由结束点的位置和跳跃的次数计算出来的,不需要指定.比如这里吧jumps从4改为2再运行,你就会发现那个小人在跳跃的时候再也不需要脑袋着地了, 哈哈.
  • Spawn ,是把几个动作揉在一起,同时做出动作,没什么好说的.
  • SequenceRepeat 包括上面这个Spawn 都是组合类的动作,非常容易理解.

至于用Sprite的runAction 来执行这些actions, 好像有个限制是说只有sprite对象必须先显示出来然后才能执行动作,不能在没显示的情况下执行动作.

Posted in 移动开发. Tagged with , .

One Response

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

Continuing the Discussion

  1. SHANE linked to this post on July 5, 2010


    Pillspot.org. Canadian Health&Care.No prescription online pharmacy.Special Internet Prices.Best quality drugs. High quality pills. Buy pills online

    Buy:Viagra Professional.VPXL.Viagra.Maxaman.Cialis Super Active+.Super Active ED Pack.Cialis.Propecia.Cialis Professional.Cialis Soft Tabs.Tramadol.Soma.Zithromax.Viagra Super Force.Viagra Super Active+.Levitra.Viagra Soft Tabs….

Some HTML is OK

(required)

(required, but never shared)

or, reply to this post via trackback.