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

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.

假设认为写的不好请多提意见,假设认为不错请多多支持点赞.谢谢! hopy ;)



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

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

比方,串行化(不是序列化哦,这是两个全然不同的概念)不同Action的执行…有些童鞋可能会说非常easy,直接用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

时间: 2024-12-26 19:49:01

Cocos2D中Action的进阶使用技巧(一)的相关文章

Cocos2d之Action类详解

一.声明 文章中使用到的cocos2d的源代码的版本是cocos2d-x-3.3rc0. 二.主要内容 [Action类简介] 在cocos2d中,Action类是所有动作的基类.Action类继承了Ref类和Clonable类. [Action类的声明源码] 声明的源码在 CCAction.h 文件中,声明如下: /** @brief Base class for Action objects. */ class CC_DLL Action : public Ref, public Clona

phpcms v9中 action="position" 和action="lists"有什么区别, 以及action 的属性和值

action值的含义: lists 内容数据(文章?)列表 relation 内容相关文章 hits 内容数据点击排行榜 category 内容栏目列表 position 内容推荐位列表 phpcms v9中 action="position" 和action="lists"有什么区别, 以及action 的属性和值,布布扣,bubuko.com

Struts2中Action接收参数的方法主要有以下三种:

Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数(最原始的方式):     a.定义:在Action类中定义属性,创建get和set方法:     b.接收:通过属性接收参数,如:userName:     c.发送:使用属性名传递参数,如:user1!add?userName=jim: 2.使用DomainModel接收参数:     a.定义:定义Model类,在Action中定义Model类的对象(不需要new),创建该对象的get和set方法

Struts2中Action取得表单数据的几种方法

Struts2中Action取得表单数据的几种方法 Struts2中Action获得表单数据的几种方法struts2 Action获取表单传值 1.通过属性驱动式JSP: <form action="sys/login.action" method="post"> <input type="text" name="username"> <input type="submit"

程序员在编程开发中的10个实用技巧

程序员在编程开发中的10个实用技巧,下面是我自己在工作中学到的一些简单的技巧和策略,希望能对各位有用.1.     橡皮鸭调试法不知道各位有没有这样的经历,当你正在给别人描述问题的时候,突然灵机一动想到了解决方案?这种情况的产生是有科学依据的.高谈阔论能让我们的大脑重新有条理地组织问题.在这种情况下,你的聊天对象就是“橡皮鸭”.团队中的每个人都应该积极主动乐意地成为彼此的“橡皮鸭”.有时候,如果你幸运的话,你的“橡皮鸭”搞不好还能给出有效的建议呢.2.     快速信息反馈一旦写好代码就要尽快得

struts2.0中Action的对象生命周期详解!!(转)

原文出处:http://blog.csdn.net/wxy_g/article/details/2071662 有很多人问Struts2.0中的对象既然都是线程安全的,都不是单例模式,那么它究竟何时创建,何时销毁呢? 这个和struts2.0中的配置有关,我们来看struts.properties ### if specified, the default object factory can be overridden here ### Note: short-hand notation is

0x3f3f3f3f...编程中无穷大常量的设置技巧

转自 http://aikilis.tk/ 如果问题中各数据的范围明确,那么无穷大的设定不是问题,在不明确的情况下,很多程序员都取0x7fffffff作为无穷大,因为这是32-bit int的最大值.如果这个无穷大只用于一般的比较(比如求最小值时min变量的初值),那么0x7fffffff确实是一个完美的选择,但是在更多的情况下,0x7fffffff并不是一个好的选择. 很多时候我们并不只是单纯拿无穷大来作比较,而是会运算后再做比较,例如在大部分最短路径算法中都会使用的松弛操作:if (d[u]

Struts2中Action接收参数的方法

详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt112 Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数:     a.定义:在Action类中定义属性,创建get和set方法:     b.接收:通过属性接收参数,如:userName:     c.发送:使用属性名传递参数,如:user1!add?userName=Magci: 2.使用DomainModel接收参数:   

C#中WinForm程序退出方法技巧总结(转)

本文实例总结了C#中WinForm程序退出方法技巧.分享给大家供大家参考.具体分析如下: 在c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.Environment.Exit(0); 等他们各自的方法不一样,下面我们就来详细介绍一下. 1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退