像其它的游戏引擎一样,我们有两个不同的方法来完成draw和update。

1: Draw:每一个CCNode都有一个draw方法,每一帧都会调用。我们只在这个方法里做描绘的事情。

2: Update:默认情况下,CCNode是没有update的,如果你想要更新状态,你可以注册一个回调函数,有以下四种方式:

scheduleUpdate:

scheduleUpdateWithPriority:

scheduleSelector:(SEL)selector

scheduleSelector: (SEL)selector interval:(float)interval

注册的方法只有当前是活动的场景,并且没有Pause的情况下才会调。我们推荐使用scheduleUpdate或者scheduleUpdateWithPriority。因为它运行更快,占用内存更少。例如:

-(id) init
{
  // -10代表优先级,越小则优先级越高,也就越先被执行
   [self scheduleUpdateWithPriority:-10];
}
-(void) update:(ccTime)deltaTime
{
   // update your node here
   // DON'T draw it, JUST update it. 
   // example:
   rotation_ = value * deltaTime;
}
 

调用了scheduleUpdate或者scheduleUpdateWithPriority后,系统就会去查找我们定义的update方法,相当于schedule了update方法。去除注册的update方法可以使用:

[node unscheduleUpdate];

我们也可以使用scheduleSelector,这是一种比较老的方式,没有优先级。如果没有interval或者当interval==0的时表示每一帧都调用。

-(id) init
{
   // the "step:" selector will be called every 0.5 seconds
   [self schedule:@selector(step:) interval:0.5f]
}
 
-(void) step:(ccTime) deltaTime
{
   // update your stuff here
}

注销掉该方法:

  [node unscheduleSelector:@selector(step:)];

cocos2d与cocos2d-X中的draw和update的更多相关文章

  1. Mac下搭建cocos2d 和cocos2d -x 环境

    来源:http://blog.csdn.net/duxinfeng2010/article/details/7985024 cocos2d是一个开源框架,用于构建2D游戏.演示程序和其他图形界面交互应 ...

  2. 在unity5中减少Draw Calls(SetPass Calls)[转]

    在unity5中减少Draw Calls(SetPass Calls)   我一直工作于unity5支持的Standard Shader(标准着色器)上,并且做了一些关于如何有效地减少draw cal ...

  3. Oracle一个事务中的Insert和Update执行顺序

    今天碰到了一个奇怪的问题,是关于Oracle一个事务中的Insert和Update语句的执行顺序的问题. 首先详细说明下整个过程: 有三张表:A,B,C,Java代码中有一段代码是先在表A中插入一条数 ...

  4. MongoDB中insert方法、update方法、save方法简单对比

    MongoDB中insert方法.update方法.save方法简单对比 1.update方法 该方法用于更新数据,是对文档中的数据进行更新,改变则更新,没改变则不变. 2.insert方法 该方法用 ...

  5. MySQL中ON DUPLICATE KEY UPDATE使用

    今天做推断插入用到了MySQL中ON DUPLICATE KEY UPDATE,如今Mark下面! 假设你想做到数据库中没有数据的话插入数据.有数据的话更新数据,那么你能够选择ON DUPLICATE ...

  6. 使用JPA中@Query 注解实现update 操作

    spring使用jpa进行update操作主要有两种方式: 1.调用保存实体的方法 1)保存一个实体:repository.save(T entity) 2)保存多个实体:repository.sav ...

  7. python中使用excutemany执行update语句,批量更新

    python中使用excutemany执行update语句,批量更新 # coding:utf8 import pymysql import logging connection = pymysql. ...

  8. xcode5. 安装cocos2d-x 学习中。。。

    找了一些帖子  没搞出来,后来找到原因了   如今的cocos2d版本号在xcode.5上 没右模版了. 用命令行 来运行.看了官方的文档.最终攻克了--- 对于自己解决的问题都会感到点兴奋. .. ...

  9. Cocos2D在新版Swift中常量枚举值引用代码的修改

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道在SpriteBuilder中是无法直接给一个CCB文 ...

随机推荐

  1. CSS一级导航-天蓝色(带阴影)

    一款亮丽的导航,能给网站一个画龙点睛的作用.导航在指引用户搜寻内容时,还能改变用户浏览网站的心情,浏览网站也像一场旅行,有创意的导航栏让用户欣赏起来也会更加愉悦,增加对网站的兴趣. 本人不擅长美工制作 ...

  2. python【第十三篇】可以写一个堡垒机了

    前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是堡垒机所具备的功能属性中的其中 ...

  3. #Leet Code# LRU Cache

    语言:C++ 描述:使用单链表实现,HeadNode是key=-1,value=-1,next=NULL的结点.距离HeadNode近的结点是使用频度最小的Node. struct Node { in ...

  4. 软件测试software testing summarize

    软件测试(英语:software testing),描述一种用来促进鉴定软件的正确性.完整性.安全性和质量的过程.软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对 ...

  5. windows server 2012服务器IIS基本配置

  6. 关于如何设置reduce的个数

    在默认情况下,一个MapReduce Job如果不设置Reducer的个数,那么Reducer的个数为1.具体,可以通过JobConf.setNumReduceTasks(int numOfReduc ...

  7. 7.微软AJAX的解决方案

    Asp.net中内置的简化AJAX开发的控件UpdatePanel非常方便,但是它会带了许多viewstate,所以高手们并不喜欢它.但它开发在内网应用时可以考滤 放入ScriptManager,将要 ...

  8. java:找出占用CPU资源最多的那个线程(HOW TO)

    在这里对linux下.sun(oracle) JDK的线程资源占用问题的查找步骤做一个小结:linux环境下,当发现java进程占用CPU资源很高,且又要想更进一步查出哪一个java线程占用了CPU资 ...

  9. EAFP和LBYL 两种防御性编程风格

    EAFP:Easier to ask for forgiveness than permission 获得事后原理总是比事先得到许可要容易的多. 这个EAFP在python中表现的比较多.EAFP,T ...

  10. 利用no_merge优化

    SQL> select a.unit3_code 机构编码, 2 a.unit3_name 机构名称, 3 a.dept1_code 部门编码, 4 a.dept1_name 部门名称, 5 a ...