关于Cocos2d-x中的scheduleUpdate和update方法的使用
一.如果要让某类实例对象要连续执行某些语句(比如让每个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方法的使用的更多相关文章
- Hibernate中的session对象update方法的使用
使一个游离对象转变为持久化对象.例如以下代码在session1中保存了一个Customer对象,然后在session2中更新这个Customer对象: Customer customer = new ...
- SpriteKit中为何不要在update方法中测试碰撞
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们若要在游戏中做碰撞检测有2种办法,一是利用物理引擎,二是自 ...
- Scala 中的 apply 和 update 方法[转]
原文链接:http://blog.csdn.net/lyrebing/article/details/21696581 Scala 是构建在 JVM 上的静态类型的脚本语言,而脚本语言总是会有些约定来 ...
- Unity3D 中的三个Update()方法
MonoBehaviour.Update 更新 当MonoBehaviour启用时,其Update在每一帧被调用. MonoBehaviour.FixedUpdate 固定更新 当Mo ...
- SqlDataAdapter.Update()方法与SqlCommandBuilder(转)
用SqlDataAdapter操纵数据集时最常用到的就是Fill()与Update()方法.Fill()填充DataSet或DataTable,而Update()就是将DataSet或DataTabl ...
- cocos2d与cocos2d-X中的draw和update
像其它的游戏引擎一样,我们有两个不同的方法来完成draw和update. 1: Draw:每一个CCNode都有一个draw方法,每一帧都会调用.我们只在这个方法里做描绘的事情. 2: Update: ...
- Cocos2d-swift V3.x 中的update方法
在cocos2d V3.x中update方法如果实现,则会被自动调用;不用向早期的版本那样要显式schedule. 但是你还是要显式schedule其他方法或blocks使用node的schedule ...
- cocos2d-x调用scheduleUpdate()不执行update()方法的解决办法
前两天使用到每帧都更新动画的scheduleUpdate()方法,但通过cclog,我发现, scheduleUpdate()是执行了.但update()方法并没有被调用. 那是因为在CCLayer中 ...
- Oracle一个事务中的Insert和Update执行顺序
今天碰到了一个奇怪的问题,是关于Oracle一个事务中的Insert和Update语句的执行顺序的问题. 首先详细说明下整个过程: 有三张表:A,B,C,Java代码中有一段代码是先在表A中插入一条数 ...
随机推荐
- Unix环境高级编程(十三)守护进程
守护进程也称为精灵进程是一种生存期较长的一种进程.它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件.他们常常在系统引导装入时启动,在系统关闭时终止.unix系统有很多守护进程,大多数 ...
- Android仿联系人列表分组悬浮列表实现,自己定义PinnedHeaderListView实现
效果 (关于gif怎么生成的.我先录手机的屏幕得到mp4文件.然后用这个网址:https://cloudconvert.com/mp4-to-gif 进行的mp4转换gif,使用的时候须要又一次选择g ...
- HDU 4063 线段与圆相交+最短路
Aircraft Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- uva 10537 Toll! Revisited(优先队列优化dijstra及变形)
Toll! Revisited 大致题意:有两种节点,一种是大写字母,一种是小写字母. 首先输入m条边.当经过小写字母时须要付一单位的过路费.当经过大写字母时,要付当前財务的1/20做过路费. 问在起 ...
- Android:你不知道的 WebView 使用漏洞
前言 如今非常多App里都内置了Web网页(Hyprid App),比方说非常多电商平台.淘宝.京东.聚划算等等.例如以下图 上述功能是由 Android的WebView 实现的.可是 WebView ...
- GNU的strong symbol和weak symbol
首先,同样的原型的两个函数在连个不同的c文件中都有定义,把这两个c文件编译.连接在一起,也没有什么错误.原因就是因为,gcc中有一个strong symbol和weak symbol的概念.默认函数定 ...
- IAsyncResult 接口
IAsyncResult 接口由包含可异步操作的方法的类实现.它是启动异步操作的方法的返回类型,如 FileStream.BeginRead,也是结束异步操作的方法的第三个参数的类型,如 FileSt ...
- JS页面跳转并及时刷新
"<script type='text/javascript'>alert('操作成功!');window.history.go(-2);window.close();</ ...
- angular学习笔记(二十三)-$http(1)-api
之前说到的$http.get和$http.post,都是基于$http的快捷方式.下面来说说完整的$http: $http(config) $http接受一个json格式的参数config: conf ...
- SpringKafka生产端配置类ProducerConfig.java源码
/** * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreeme ...