Cocos2d-x 3.0 Schedule in Node
***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************
啊哈~,做完这个開始准备做一些真正的小游戏耍一耍咯~
打地基,非常重要,地基打好了。能够開始别的东东啦 ~\(≧▽≦)/~啦啦啦
这次学习的东东,是计划任务,顾名思义。不须要自己动手,它自己依照一定顺序运行的东东。
最常见的,就是非常多手游里的一些開始界面中,动态的背景。
在上一次学习中。学习了屏幕触摸和消息分发机制。
最后实现了,我们触摸屏幕。然后精灵会移动到所触摸的位置。
而这次,要实现的就是,让角色自己,从左向右运动(重复)。
在cocos2d-x中,有一个大循环。它以每秒60帧的速度,不断刷新屏幕。
而我们要加入自己的计划任务,就须要利用它的这个频率,将我们自己的任务加入的这个大循环中。
首先,制定自己的更新函数,
在HelloWorldScene.h中加入update函数:
// for schedule
void update( float t );
然后在.cpp中制定动作。
我们的动作就是让 精灵 从左向右移动,就是用setPosition就能够了,
重复移动,就是加一个推断语句,大于右面边界则 从最左面又一次開始移动。
void HelloWorld::update( float t )
{
auto sprite=this->getChildByTag(33);
sprite->setPositionX(sprite->getPositionX()+1);
// 详细大于多少,看你屏幕宽度为多少啦~
if( sprite->getPositionX() > 960 )
sprite->setPositionX(0);
}
最后,别忘了,在init函数中,增加计划任务哟~
// 加入计划任务
this->scheduleUpdate(); //加入update任务
这样。执行一下,就能够发现。
不用自己触摸屏幕,你的精灵能够,慢慢从中间移动到右面,再从左面移动到右面,
为什么開始是从中间移动到右面呢?
BUG?! NO。!
!
由于我们设置精灵。初始位置是在正中间呀~
OK,做到这。你能够发现,我们的频率是固定的。那...我们能控制移动的速度吗?
Of Course!
方法一:
简单点。设置一个计数变量,
我们能够在类中,定义一个计数变量 js ,
然后,每次调用update函数的时候。js++
仅仅要js<10 ,则返回,不运行以下的语句,
当js==10时,则能够继续运行,最后让js归于0。
通过上述控制。我们能够将 每秒60速度。降到 每秒6的速度:
( 不止要在.h文件声明 js 变量。也要在Init函数中初始化为0 哟)
void HelloWorld::update( float t )
{
++js;
if( js<10 ) return; auto sprite=this->getChildByTag(33);
sprite->setPositionX(sprite->getPositionX()+1);
// 详细大于多少。看你屏幕宽度为多少啦~
if( sprite->getPositionX() > 960 )
sprite->setPositionX(0);
js=0;
}
方法二:
自带方法:
schedule(schedule_selector(_SELECTOR),float time);
两个參数,第一个就是调用哪个函数。第二个就是每隔多长时间调用。
this->schedule(schedule_selector(HelloWorld::update),1);
void HelloWorld::update( float t )
{
auto sprite=this->getChildByTag(33);
sprite->setPositionX(sprite->getPositionX()+1);
// 详细大于多少,看你屏幕宽度为多少啦~
if( sprite->getPositionX() > 960 )
sprite->setPositionX(0);
}
这样。每隔1秒。调用一次update函数,当然你也能够换一个函数调用。
and。还有关于计划任务的其它选项:
——启动
——暂停
——停止
——恢复
这些在 cocos2d-x提供的測试程序中有具体用法。这里就先不说啦~
恩,Today,就到这里吧!
(要熄灯啦~╭(╯3╰)╮)
***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************
Cocos2d-x 3.0 Schedule in Node的更多相关文章
- 高屋建瓴 cocos2d-x-3.0架构设计 Cocos2d (v.3.0) rendering pipeline roadmap(原文)
Cocos2d (v.3.0) rendering pipeline roadmap Why (the vision) The way currently Cocos2d does rendering ...
- error eslint@5.12.0: The engine "node" is incompatible with this module.
初始化 react项目时报错: error eslint@5.12.0: The engine "node" is incompatible with this module. E ...
- cocos2d-x 3.0 画图节点——Node
***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(四)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 现在打开MainScene.m文件,首先设置实例变量: @imp ...
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(八)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 回到Xcode中,新建一个EndLayer类,继承于CCNode ...
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(一)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 首先说一下为什么要转换,这是为了后面的A*寻路算法做准备.由于在 ...
- windows平台 - 0基础学习node.js(一)
首先得明白node.js做什么用的: 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Nod ...
- k8s1.13.0二进制部署-node节点(四)
Master apiserver启用TLS认证后,Node节点kubelet组件想要加入集群,必须使用CA签发的有效证书才能与apiserver通信,当Node节点很多时,签署证书是一件很繁琐的事情, ...
- 最新版本号cocos2d­2.0­x­2.0.2使用新资源载入策略!不再沿用-hd、-
前段时间cocos2dx更新了最新版本号cocos2d2.0x2.0.2.也从这个版本号開始对于资源载入与管理都改变了策略. 在之前的载入方式都是通过沿用与cocos2d-iphone一样 ...
随机推荐
- 给DOM操作生成的元素添加事件
问题:通过js给页面添加新元素,并给该元素添加绑定事件,但新添加的元素上却没有绑定任何事件. 常见例子:在处理表格的时候,每行行末有个删除按钮,如下图.点击删除按钮的时候删除这一行. //html部分 ...
- 【python爬虫和正则表达式】爬取表格中的的二级链接
开始进公司实习的一个任务是整理一个网页页面上二级链接的内容整理到EXCEL中,这项工作把我头都搞大了,整理了好几天,实习生就是端茶送水的.前段时间学了爬虫,于是我想能不能用python写一个爬虫一个个 ...
- virtualbox挂载目录失败mount: unknown filesystem type ‘vboxsf’
转自[https://blog.csdn.net/u011486871/article/details/79443375] [有小修改] 错误提示:Vagrant was unable to moun ...
- java String字符串操作 字符串加密等
子串加密 1,设计思想 (1)输入一个字符串 (2)通过toCharArray()的方法将字符串转换成字符数组 (3)新建一个字符数组用来存储修改后的字符数组 2,程序流程图 3,源代码 packag ...
- MHA搭建及故障维护
MHA是一种方便简单可靠的MySQL高可用架构,具体的介绍我在这里就不多说了,下面是我在网上找的一个教程,我在此基础上进行了一些修改: 大致步骤 (一).环境介绍 (二).用ssh-keygen实现四 ...
- vue-cli 打包 使用 history模式 的后端配置
apache的配置 这是windows下的 在httpd-vhosts.conf文件中把目录指向项目index.html文件所在的位置 # Virtual Hosts # <VirtualHos ...
- CSS 清除浮动 伪类
参考链接:https://www.cnblogs.com/yingsu/p/7261904.html 不清楚浮动的结果和影响不再描述,清除浮动的代码别处也有很多,每种方法都有十分简洁的代码,我今天学到 ...
- Adobe Flex迷你教程 —Flex4全屏显示
应用场景 1.播放器 我们经常看视频的时候,需要全屏显示,(在flex中这个视频初始化的时候是嵌入到html的iframe中). 2.监控 如下图所示,大多时候我们的监控用的是flex,而树形菜单和标 ...
- 【codeforces 411B】Multi-core Processor
[题目链接]:http://codeforces.com/problemset/problem/411/B [题意] 处理器有n个核;然后有k个存储单元; 有m轮工作;每轮工作都会给每个核确定一个数字 ...
- Linux下查询CPU 缓存的工具
在Linux下能够使用例如以下工具查询CPU缓存: 方式1: $ lscpu L1d cache: 32K <span style="white-space:pre"> ...