***************************************转载请注明出处: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的更多相关文章

  1. 高屋建瓴 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 ...

  2. 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 ...

  3. cocos2d-x 3.0 画图节点——Node

    ***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...

  4. Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(四)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 现在打开MainScene.m文件,首先设置实例变量: @imp ...

  5. Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(八)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 回到Xcode中,新建一个EndLayer类,继承于CCNode ...

  6. Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(一)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 首先说一下为什么要转换,这是为了后面的A*寻路算法做准备.由于在 ...

  7. windows平台 - 0基础学习node.js(一)

    首先得明白node.js做什么用的: 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Nod ...

  8. k8s1.13.0二进制部署-node节点(四)

    Master apiserver启用TLS认证后,Node节点kubelet组件想要加入集群,必须使用CA签发的有效证书才能与apiserver通信,当Node节点很多时,签署证书是一件很繁琐的事情, ...

  9. 最新版本号cocos2d&#173;2.0&#173;x&#173;2.0.2使用新资源载入策略!不再沿用-hd、-

     前段时间cocos2dx更新了最新版本号cocos2d­2.0­x­2.0.2.也从这个版本号開始对于资源载入与管理都改变了策略. 在之前的载入方式都是通过沿用与cocos2d-iphone一样 ...

随机推荐

  1. php 基础------数组过滤

    array_filter();过滤数组 语法: array_filter(array,callbackfunction); array 必写,规定要过滤的数组 callbackfunction 必写, ...

  2. 3dmax快速实现一个逼真地毯效果

    3dsmax怎么制作逼真的毛绒地毯模型?3dsmax中想要中想要建模长方形的毛绒地毯,该怎么制作呢?下面我们就来看看详细的教程,需要的朋友可以参考下: 1.在创建面板-扩展基本体下选择切角长方体 2. ...

  3. python中*号用法总结

    python 中有很多地方用到星号,有时候会想知道这个*是干嘛用的,总结如下,有不当之处,还望不吝指出,谢谢.1.乘法: 在很多时候是用作乘法的,例如: In [90]: 2*7 Out[90]: 1 ...

  4. mybatis中 #跟$的区别

    #相当于对数据 加上 双引号,$相当于直接显示数据 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sq ...

  5. 《剑指Offer》——试题1:赋值运算符函数

    题目:如下类型为CMyString的声明,请为该类型添加赋值运算符函数.   class CMyString { public: CMyString(char* pData = NULL); CMyS ...

  6. 关于Jwt的一些思考

    在使用jwt的过程中发现了两个问题续期和退出的问题. 续期 因为jwt的token在签发之后是有过期时间的,所以就存在管理这个过期时间的问题.我看网上有提出解决方案的大致有下面几个 每次更新过期时间, ...

  7. docker下修改mysql配置文件

    原文:docker下修改mysql配置文件 版权声明:本文为博主原创文章,转载注明地址:http://blog.csdn.net/wang704987562 https://blog.csdn.net ...

  8. 洛谷 P2183 巧克力

    P2183 巧克力 题目描述 佳佳邀请了M个同学到家里玩.为了招待客人,她需要将巧克力分给她的好朋友们.她有N(1<=N<=5000)块巧克力,但是大小各不一样,第i块巧克力大小为为1*X ...

  9. duplicate报ORA-01017权限问题

    duplicate报ORA-01017权限问题   环境: OS:RedHat EnterPrise Linux 5.8 x64 Cluster:Oracle Grid 11.2.0.4 Databa ...

  10. 【POJ 1845】 Sumdiv (整数唯分+约数和公式+二分等比数列前n项和+同余)

    [POJ 1845] Sumdiv 用的东西挺全 最主要通过这个题学了约数和公式跟二分求等比数列前n项和 另一种小优化的整数拆分  整数的唯一分解定理: 随意正整数都有且仅仅有一种方式写出其素因子的乘 ...