九、CCAction

之前介绍CCNode的时候说过,动作是指在特定时间内完成移动、缩放、旋转等操作的行为,节点可以通过运行动作来实现动画效果,这里的动作就是指CCAction对象,它有很多的子类,每个子类都封装了不同的动作效果。

先来看看CCAction的继承结构图

这里我省略了瞬时动作(CCActionInstant)和间隔动作(CCActionInterval)的子类,因为它们又包含了非常多的子类,待会再介绍它们的子类。

CCAction和CCFiniteTimeAction都是抽象类,只定义了一些基本属性和方法,没有实际用途,我们需要使用它们的子类来初始化动作,然后运行到节点上。


间隔动作

间隔动作就是指需要经过一段时间才能完成的动作,所有的间隔动作 都继承自CCActionInterval。比如CCRotateBy,可以在指定时间内旋转指定的角度

// 1秒内顺时针旋转360°
CCRotateBy *rotate = [CCRotateBy actionWithDuration:1 angle:360];
[sprite runAction:rotate];


间隔动作的继承结构图:(只列出部分常用的)


由于CCActionInterval的子类太多了,这里就不一一介绍了,可以查阅下API文档

下面列举一下常见的CCActionInterval的子类:

1.CCBlink

闪烁效果

// 5秒内闪烁20次
CCBlink *blink = [CCBlink actionWithDuration:5 blinks:20];
[sprite runAction:blink];

2.CCMoveBy和CCMoveTo

CCMoveBy是移动一段固定的距离,CCMoveTo是移动到指定的位置

// 在1秒内,向右移动100单位,同时向上移动80单位
CCMoveBy *moveBy = [CCMoveBy actionWithDuration:1 position:CGPointMake(100, 80)];

// 在1秒内,从节点的当前位置移动到(100, 80)这个位置
CCMoveTo *moveTo = [CCMoveTo actionWithDuration:1 position:CGPointMake(100, 80)];

3.CCRotateBy和CCRotateTo

CCRotateBy是在当前旋转角度的基础上再旋转固定的角度,CCRotateTo是从当前旋转角度旋转到指定的角度

假设精灵在初始化的时候已经顺时针旋转了 45°

sprite.rotation = 45;


如果使用了CCRotateBy

CCRotateBy *rotateBy = [CCRotateBy actionWithDuration:1 angle:90];
[sprite runAction:rotateBy];

// 在1秒内,再顺时针旋转90°,那么sprite的最终旋转角度是45° + 90° = 135°

如果使用了CCRotateTo
CCRotateTo *rotateTo = [CCRot
  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值