一.如果要让某类实例对象要连续执行某些语句(比如让每个Block实例从运行框最右边移动到最左边)

要在Block类中增加一些东西

1.先在其.cpp文件的init()函数中执行scheduleUpdate()方法。

2.然后在.h中声明一个虚拟的函数update,并在.cpp文件中定义update,当init中执行scheduleUpdate()时,会不断地调用update函数,里面的语句也不断地被执行,直到执行unscheduleUpdate()时停止调用update()函数,unscheduleUpdate()语句一般放在update函数中,当满足某个条件时就执行。

二.如果要不断地创建某个类的实例对象(比如不断地创建新的Block在最右边),可以用到嵌套的update方法

要在GameController类中增加一些东西

1.先在HelloWorld类的.cpp文件的init()函数中执行scheduleUpdate()方法。

2.然后在HelloWorld类的.h文件中声明一个虚拟的函数update,并在.cpp文件中定义update,里面的语句也不断地被执行,语句具体是去调用GameController实例中的onUpdate()函数。

void Game1::update(float dt){
  for (auto it = gcs.begin(); it != gcs.end(); it++) {
    (*it)->onUpdate();
}

3.再在GameController类的.h文件中声明一个虚拟的函数onUpdate,并在.cpp文件中定义onUpdate,里面的语句也不断地被执行,语句具体是创建一个Block类的实例对象。

4.但是不断的调用的时间间隔是每一帧,可以说太快了,如果我们希望调用的时间间隔长一点或者时间间隔是随机的,我们就要在GameController类的.h文件里面再定义两个属性,frameIndex和nextKeyFrameIndex,再声明一个函数resetTimer,这个函数用来重置当前帧和下一次调用onUpdate函数时的帧数,这个是随机的,一般情况下1秒等于60帧,所以下面那个定义意思就是2秒到4秒之间的一个时间会调用onUpdate函数

void GameController::resetTimer(){
  frameIndex = ;
  nextKeyFrameIndex = rand()%+;
} void GameController::onUpdate(){   frameIndex++;   if (frameIndex>=nextKeyFrameIndex) { //当当前帧数等于或大于随机的目的帧数时,创建Block并重置frameIndex和nextKeyFrameIndex   auto b = game::Block::create();
  _layer->addChild(b);
  b->setPositionY(_positionY+b->getContentSize().height/);   resetTimer();
  }
}

5.游戏结束的时候要把这个一直执行的update停掉,用到unscheduleUpdate(),一般是放在一些事件监听的函数中

三.如果要指定一定的时间间隔去调用某个方法用

schedule(schedule_selector(PlaneHero::beginShooting),.5f);

这里的.5f其实就等于0.5f,而且这个参数是以秒为单位的,也就是说,每格0.5秒去调用这个beginShooting方法,达到我们想要的射子弹的效果。

关于Cocos2d-x中的scheduleUpdate和update方法的使用的更多相关文章

  1. Hibernate中的session对象update方法的使用

    使一个游离对象转变为持久化对象.例如以下代码在session1中保存了一个Customer对象,然后在session2中更新这个Customer对象: Customer customer = new ...

  2. SpriteKit中为何不要在update方法中测试碰撞

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们若要在游戏中做碰撞检测有2种办法,一是利用物理引擎,二是自 ...

  3. Scala 中的 apply 和 update 方法[转]

    原文链接:http://blog.csdn.net/lyrebing/article/details/21696581 Scala 是构建在 JVM 上的静态类型的脚本语言,而脚本语言总是会有些约定来 ...

  4. Unity3D 中的三个Update()方法

            MonoBehaviour.Update 更新 当MonoBehaviour启用时,其Update在每一帧被调用. MonoBehaviour.FixedUpdate 固定更新 当Mo ...

  5. SqlDataAdapter.Update()方法与SqlCommandBuilder(转)

    用SqlDataAdapter操纵数据集时最常用到的就是Fill()与Update()方法.Fill()填充DataSet或DataTable,而Update()就是将DataSet或DataTabl ...

  6. cocos2d与cocos2d-X中的draw和update

    像其它的游戏引擎一样,我们有两个不同的方法来完成draw和update. 1: Draw:每一个CCNode都有一个draw方法,每一帧都会调用.我们只在这个方法里做描绘的事情. 2: Update: ...

  7. Cocos2d-swift V3.x 中的update方法

    在cocos2d V3.x中update方法如果实现,则会被自动调用;不用向早期的版本那样要显式schedule. 但是你还是要显式schedule其他方法或blocks使用node的schedule ...

  8. cocos2d-x调用scheduleUpdate()不执行update()方法的解决办法

    前两天使用到每帧都更新动画的scheduleUpdate()方法,但通过cclog,我发现, scheduleUpdate()是执行了.但update()方法并没有被调用. 那是因为在CCLayer中 ...

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

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

随机推荐

  1. Java 发送邮件工具包---未完待续

    开头先来介绍一片好文章: http://blog.itpub.net/15182208/viewspace-730172/

  2. django中cookies和session

    django中cookies和session是两个经常使用的用户认证工具.都是类似于字典的数据类型,都是request的内部属性 cookies的读写方法 cookies读,比如username us ...

  3. k8s-configmap

    一.目的 把应用的代码和配置分开,通过配置configmap管理pod,一种统一的集群配置管理方案.ConfigMap API资源提供了将配置数据注入容器的方式,同时保持容器是不知道Kubernete ...

  4. HDU 4968 Improving the GPA(dp)

    HDU 4968 Improving the GPA 题目链接 dp.最大最小分别dp一次,dp[i][j]表示第i个人,还有j分的情况,分数能够减掉60最为状态 代码: #include <c ...

  5. 在ModelSim中添加Xilinx仿真库

    在ModelSim中添加Xilinx仿真库 说明: l ModelSim一定要安装在不带空格的目录下,即不要安装在“Program Files”目录下.如作者是安装在D:\softwares\Mode ...

  6. SVN清除,VS中SVN的错误以及全部替换

    是tortoisesvn吧?右键,设置,已保存数据,认证数据,清除 ======= <<<<<<< .mine ||||||| .r15 >>&g ...

  7. 【Android】21.2 2D图形图像处理(Canvas和Paint)

    分类:C#.Android.VS2015: 创建日期:2016-03-19 一.Canvas对象简介 画布(Canvas对象)是与System.Drawing或iOS核心图形等传统框架非常类似的另一种 ...

  8. Books from Joe's blog

    Some books that I really enjoy(ed) It's been quite some time since I blogged about what I've been re ...

  9. Error LNK2019:Unresolved External Symbol 的解决方案

    当头文件中声明了一个函数,但是在相应的源文件中却没有对该函数进行定义,则会出现为“解决的外部符号”(unresolved external symbol )错误.另外,当一个函数调用了外部的一个库文件 ...

  10. vue轮播图插件vue-awesome-swiper的使用与组件化

    不管是APP还是移动端网页开发,轮播图在大部分项目当中都是存在的,这时候如果用vue开发项目,选择一款好的插件并且封装好是很重要的 1. 推荐使用vue-awesome-swiper 安装:cnpm ...