Cocos2D中Action的进阶使用技巧(一)

简介:

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)


大家对Cocos2d中动作的使用大概都很清楚了,其实本身action的概念也不复杂.

但是在某些情况下,一般的动作不能满足我们需求的时候,我们就必须使用更高级的Action方法来解决问题.

比如,串行化(不是序列化哦,这是两个完全不同的概念)不同Action的执行…有些童鞋可能会说很简单,直接用CCActionSequence不就结了,但是等等我还没说完…这些串行执行的动作的目标是不同的.

再说的具体点,游戏中有2个队列,分别是我方队列和敌方队列,每个队列有若干unit,每个unit可以做攻击动作,同时每个unit也可以做被攻击的动作.现在要求的逻辑是:

  1. 取出一个unit发起攻击动作
  2. 等到攻击动作结束后,被攻击的unit再完成被攻击动作
  3. 依次串行化以上2个步骤,直到所有unit都处理完毕

看似简单的要求,如果使用正常的Action来完成就会发现无从下手.其实一般的解决办法是有的,但是有限制,就是假定每个被攻击动作的时间都一致.这样可以通过特定延时的方法来解决,伪代码如下:

Array *actions
for each unit in list
    attacker = unit
    attackTarget = unit.target
    CallBack *cb = ^{[attackTarget runAttackedAction]}
    Delay *delay = [delay 1];
    [actions addObject:attacker.attackAction];
    [actions addObject:cb];
    [actions addObject:delay];
end for

基本上类似如上的代码,注意其中增加了一个延时1秒钟,因为我知道AttackedAction大概要运行1秒钟.

如果每次AttackedAction运行的时间不确定的话,这招就没有用了.

我们这时必须使用另外一种Action:CCTargetedAction

相关文章
|
6月前
|
API Android开发
Android高手进阶教程(十五)之---通过Location获取Address的使用!
Android高手进阶教程(十五)之---通过Location获取Address的使用!
63 1
|
设计模式 安全 API
iOS Target-Action设计模式的运用
iOS Target-Action设计模式的运用
175 0
iOS Target-Action设计模式的运用
|
Android开发 容器
Flutter 107: 图解自定义 ACEPageMenu 滑动菜单 (二)
0 基础学习 Flutter,第一百零七篇,继续完善自定义 ACEPageMenu 第二节!
318 0
Flutter 107: 图解自定义 ACEPageMenu 滑动菜单 (二)
|
容器
Flutter 105: 图解自定义 ACEPageMenu 滑动菜单 (一)
0 基础学习 Flutter,第一百零五步:自定义从屏幕四周滑动 ACEPageMenu!
365 0
Flutter 105: 图解自定义 ACEPageMenu 滑动菜单 (一)
|
前端开发 Android开发
Flutter 33: 图解自定义 View 之 Paint
0 基础学习 Flutter,第三十三步:自定义 View 第一节~
2527 0