cocos2d-x温故(二)Action!

本文详细解析了Cocos2d-x游戏引擎中的动作系统,包括瞬时动作、延时动作及其分类,以及如何通过不同类型的CCAction来实现复杂的动画效果。此外,还介绍了如何使用CCCallFunc系列函数在动作执行过程中触发特定的回调。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接看继承关系图:

image

多数用到的是限时动作,其意思就是有限时间内完成的动作,它又分为瞬时动作和延时动作。

瞬时动作如下:

imageactiontests第一个例子也算是:

image设置缩放,位置,透明度颜色等等。

延时动多就多了,但绝大多数又分为两种即to和by.to是至,by增量。看个例子:

CCActionInterval*  actionTo = CCScaleTo::create(2.0f, 0.5f);
CCActionInterval*  actionBy = CCScaleBy::create(2.0f, 0.5f);

一个精灵执行了actionTo后的大小是原来的一半。执行actionBy后就是原来的1.5倍。

 

比较麻烦的就是以下几种了:

CCSequence,即动作会顺序执行,一个执行完了接着执行下一个。

CCSpawn,动作融合,即其参数例表里的动作同时执行。

CCRepeatForever,动作永远执重复执行。

这三个可以组合其他动作,它们之间也可能相互组合。

 

再有就是可以调用函数的动作了,如下:

image

一个动作序列,其中顺序执行其中的六个动作,前两个就是传说中的瞬时动作。后三个就是能调动函数的。调用的函数均无返回值。

其参数都有一个target,一个选择器.target是指你要调用哪个对象的方法,这里就是this。假如你有个人类的对象小明,你想调用他的方法,这里this就要

换成小明的指针了。选择器里面的函数名就是你要调用的方法了,在cocos2d中前面不需要指出类名的,但cocos2d-x中是要的,主要原因应该是objc和C++的不同。

并且只是函数名,不要带();

CCCallFunc:调用的方法是不带参数的。

CCCallFuncN:调用的方法是需要一个NODE的指针作为参数,其传过来的就是执行这个动作的NODE,如A->runAction,就是指A,并不是其参数target.

CCCallFuncND:调用的方法是需要一个NODE的指针和一个数据的指针作为参数;可能把数据传过去。

CCCallFuncNO:和上面的CCCallFuncND差不多,不过传的是一个CCObjet*.

 

还有一个情况,如下:

CCActionInterval*  act1 = CCRotateTo::create(1, 90);
  CCActionInterval*  act2 = CCTintTo::create(2, 255, 0, 255); 

  m_tamara->runAction(act1);
  m_kathia->runAction(act2);

当执行这四句代码后,两个动作会同时执行。类似CCSpawn。

action的具体实现没有具体研究,不过我觉得你可以把它当成一个线程来用。比如,你可以用CCCallFunc预加载一些资源等,这样程序可以一直执行,不用

等待。类似执行一次的schedule。很多用到线程的时候用这两个替代未常不可。

好了,就想到这些东西,再想到再补充吧。

第一次写,不足之处还望指正。

转载请注明出处。

转载于:https://my.oschina.net/u/184773/blog/64578

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值