天天看点

了解CCMoveTo CCCallFuncN CCSequence用法

在《iPhone & iPad Cocos2D游戏开发实战》一书中在看第四章时候遇到陌生知识,然后在网上找到相关知识点,再此记录;

由序列控制蜘蛛的移动方法代码

RunSpiderMoveSequence方法的作用是跟踪已被放下的蜘蛛数量。每次到第八个蜘蛛时,spiderMoveDuration的值就会被减少,从而提高所有蜘蛛的移动速度。%这个符号叫作“余数运算子”(Modulus Operator),用于得到运用除法以后得到的余数。比如,如果numSpidersMoved可以用8除尽,那么“余数运算子”的计算结果就应该是0。

这里用到的动作序列只有一个CCMoveTo动作和一个CCCallFuncN动作。你可以改进蜘蛛的行为,比如让它往下移动一点,等个几秒钟,然后一直移动到底部,就像真的邪恶的蜘蛛通常会做的那样。我将把具体的做法留给你去发挥。我选择CCCallFuncN的目的是给spiderBelowScreen方法传递蜘蛛精灵作为它的sender变量。这样的话,当某只蜘蛛到达屏幕底部时,我就可以直接引用那个蜘蛛,不需要再去到处找了 

1.CCMoveTo  

表示移动到某一个点,还有一个与它类似的CCMoveBy表示移动相对于当前位置某个位置,相当于一个向量;

2.CCCallFuncN

CCCallFuncN 带有一个参数,这个参数本身是一个Action,相当于他的参数就是一个BUtton;与它类似的还有

CCCallFunc 不带参数, 执行回调函数方法,

CCCallFuncND 带两个参数,一个是Action动作,另一个是自定义的参数

CCCallFuncO 也是两个参数,和CCCallFuncN参数一样,

以下是几个类在CCActionInstant.m文件中的定义,通过他们的-(void)execute函数看出他们参数问题

3.CCSequence 

sequence是用来按顺序执行一系列的动作,即动作按排列的顺序一个接一个的执行,示例如下:

上面这段代码的意思是,sprite(精灵对象)先移动到坐标(100,100)位置,然后在向右上方移动(80,80),然后,再向右移动80(80,0)。这一系列动作是不重叠,一个接一个的执行的。 

注意的是,在这些动作中不能有 CCRepeatForever 这种无限的动作(就是不停的一直持续的动作),必须是那种可以在有限的时间内完成的。 

另外在博客上看到其他几个类似的类的用法,都是cocos2d常用动作 原文连接 http://leeyin.iteye.com/blog/1306557

CCSpawn 

这个与上面的 CCSequence 不同的是,排列的动作是同时执行的,执行的时间以子动作中的最长的时间为准。代码示例:

上面这段代码的意思是,sprite 在两秒钟内,向右跳四次,总共跳跃距离是300,跳跃高度是50,在跳跃过程中 同时旋转720度。 

CCRepeat 

这个是用来重复一个动作有限的次数。当然,你也可以用CCSequence来实现同样的功能,只是那样看起来有点傻。示例:

上面这段代码的意思是,先将sprite 放置在(60,60)位置,然后一秒内向右移动150的距离。这两个动作重复3次。

CCRepeatForever 

上面的是重复有限次数,这个是无限次重复,比如,你想让一个轮子不停的旋转,就可以用这个实现。示例:

就像上面讲的这段代码会让这个 sprite 一直不停的 以每秒360度的转速永远的旋转下去。 

本文转自新风作浪 51CTO博客,原文链接:http://blog.51cto.com/duxinfeng/1208717,如需转载请自行联系原作者