每场比赛有一个程序执行周期继续。这是导演对象来管理非常维修。在运动假设需要的场景精神,我们可以使用计时器在游戏圈(Scheduler)精灵和其他对象进行调度。

由于Node类封装了Scheduler类,所以我们也能够直接使用Node中调用函数。

Node中调用函数主要有:

void scheduleUpdate ( void )。每个Node对象仅仅要调用该函数,那么这个Node对象就会定时地每帧回调用一次自己的update(float dt)函数。

void schedule ( SEL_SCHEDULE selector,  float  interval )。与scheduleUpdate函数功能一样。不同的是我们能够指定回调函数(通过selector指定)。也能够更加须要指定回调时间间隔。

void unscheduleUpdate ( void )。停止update(float dt)函数调度。

void unschedule ( SEL_SCHEDULE selector )。能够指定详细函数停止调度。

void unscheduleAllSelectors ( void )。

能够停止调度。

为了进一步了解游戏循环与调度的使用,我们改动HelloWorld实例。

改动HelloWorldScene.h代码。加入update(float dt)声明,代码例如以下:

class HelloWorld : public cocos2d::Layer
{
public:
... ... virtual void update(float dt); CREATE_FUNC(HelloWorld); };
改动HelloWorldScene.cpp代码例如以下:
bool HelloWorld::init()
{
... ... auto label = LabelTTF::create("Hello World","Arial", 24);
label->setTag(123); ①
... ... //更新函数
this->scheduleUpdate(); ②
//this->schedule(schedule_selector(HelloWorld::update),1.0f/60); ③ return true;
} voidHelloWorld::update(float dt) ④
{
auto label =this->getChildByTag(123); ⑤
label->setPosition(label->getPosition()+ Point(2,-2)); ⑥
} void HelloWorld::menuCloseCallback(Ref*pSender)
{
//停止更新
unscheduleUpdate(); ⑦
Director::getInstance()->end(); #if (CC_TARGET_PLATFORM ==CC_PLATFORM_IOS)
exit(0);
#endif
}

为了能够在init函数之外訪问标签对象label,我们须要为标签对象设置Tag属性,当中的第①行代码就是设置Tag属性为123。

第⑤行代码是通过Tag属性获得又一次获得这个标签对象。

为了能够開始调度还须要在init函数中调用scheduleUpdate(见第②行代码)或schedule(见第③行代码)。

代码第④行的HelloWorld::update(floatdt)函数是在调度函数,精灵等对象的变化逻辑都是在这个函数中编写的。我们这个样例非常easy仅仅是让标签对象动起来,第⑥行代码就是改变它的位置。

为了省电等目的,假设不再使用调度。一定不要忘记停止调度。

第⑦行代码unscheduleUpdate()就是停止调度update。假设是其它的调度函数能够採用unschedule或unscheduleAllSelectors停止。

很多其它内容请关注最新Cocos图书《Cocos2d-x实战 C++卷》

本书交流讨论站点:http://www.cocoagame.net

很多其它精彩视频课程请关注智捷课堂Cocos课程:http://v.51work6.com
欢迎加入Cocos2d-x技术讨论群:257760386

《Cocos2d-x实战 C++卷》现已上线,各大商店均已开售:

京东:http://item.jd.com/11584534.html

亚马逊:http://www.amazon.cn/Cocos2d-x%E5%AE%9E%E6%88%98-C-%E5%8D%B7-%E5%85%B3%E4%B8%9C%E5%8D%87/dp/B00PTYWTLU

当当:http://product.dangdang.com/23606265.html

互动出版网:http://product.china-pub.com/3770734

《Cocos2d-x实战 C++卷》源代码及样章下载地址:

源代码下载地址:http://51work6.com/forum.php?

mod=viewthread&tid=1155&extra=page%3D1

样章下载地址:

mod=viewthread&tid=1157&extra=page%3D1" style="color: rgb(51, 102, 153); text-decoration: none;">http://51work6.com/forum.php?mod=viewthread&tid=1157&extra=page%3D1

欢迎关注智捷iOS课堂微信公共平台

版权声明:本文博主原创文章。博客,未经同意不得转载。

cocos2d-x游戏循环和日程安排的更多相关文章

  1. cocos2d-x游戏循环与调度

    每一个游戏程序都有一个循环在不断运行,它是有导演对象来管理很维护.如果需要场景中的精灵运动起来,我们可以在游戏循环中使用定时器(Scheduler)对精灵等对象的运行进行调度.因为Node类封装了Sc ...

  2. dhtmlxScheduler日程安排控件

    dhtmlxScheduler是一个JavaScript日程安排控件 官方网站:http://www.dhtmlx.com/在线帮助文档:http://docs.dhtmlx.com/doku.php ...

  3. 【Visual C++】游戏编程学习笔记之三:游戏循环的使用

     本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44208419 作者:Zee ...

  4. C#游戏开发中快速的游戏循环

    C#游戏开发中快速的游戏循环的实现.参考<精通C#游戏编程>一书. using System; using System.Collections.Generic; using System ...

  5. Cocos2d—X游戏开发之CCToggle(菜单标签切换)CCControlSwitch(开关切换)

    Cocos2d—X游戏开发之CCToggle(菜单标签切换) 首先继承子CCMenu,是菜单标签中的一种.‘ class CC_DLL CCMenuItemToggle : public CCMenu ...

  6. Win2D 中的游戏循环:CanvasAnimatedControl

    Win2D 是 DirectX 的一个高层封装,提供了极大 DirectX 性能的同时,又具有很好用的 API 设计. 用 Win2D 除了能做出高性能的视觉效果之外,还可以轻而易举地搭建一个游戏循环 ...

  7. iOS cocos2d 2游戏开发实战(第3版)书评

    2013是游戏爆发的一年,手游用户也是飞速暴增.虽然自己不做游戏,但也是时刻了解手机应用开发的新动向.看到CSDN的"写书评得技术图书赢下载分"活动,就申请了一本<iOS c ...

  8. Visio日程安排图

    黄日历: 怎么创建呢? 首先找到日程安排图表 然后找到日历 这就是日历的形状模块 拖动“日”日历形状进行创建 创建好的日历通过右键单击选择"配置"来修改日期 这是周日历 与日日历不 ...

  9. Python:pyglet学习(3):游戏循环

    在我们编游戏时,经常会用到一个无限循环,这就叫游戏循环. 先用@win.event试试 import pyglet as p win=p.window.Window(800,600) @win.eve ...

随机推荐

  1. NoSQL架构实践

    经常有朋友遇到困惑,看到NoSQL的介绍,觉得很好,但是却不知道如何正式用到自己的项目中.很大的原因就是思维固定在MySQL中了,他们问得最多的问题就是用了NoSQL,我如何做关系查询.那么接下来,我 ...

  2. 【FAQ】SpingMVC实现集合參数(Could not instantiate bean class [java.util.List])

    需求,要求批量新增或者改动一个List,在Spring MVC中是不支持以下代码的写法 @RequestMapping(value = "/update", method = Re ...

  3. U盘安装Ubuntu kylin版

    初试U盘安装Ubuntu14.04 kylin版  等待Ubuntu14.04 kylin版出来后,一直想要尝试在物理机进行安装体验,恰巧碰到五一假期,因为咱是穷人,没钱出去玩,所以就有了时间实地进行 ...

  4. Qt Quick鼠标事件处理、键盘、计时器

    在<Qt Quick 事件处理之信号与槽>中介绍了 QML 中怎样使用内建类型的信号以及怎样自己定义信号,这次我们来看看怎样处理鼠标.键盘.定时器等事件.这些时间在处理时,一般是通过信号来 ...

  5. 【Android】 -- 使用UncaughtExceptionHandler捕捉全局异常

    在综合统计SDK(欧盟统计局的朋友,百度统计)之后.有一个非常有利的功能测试:错误分析.此功能可以在程序的执行中遇到崩溃(runtimeException)反馈给server,帮助开发者提高产品.多功 ...

  6. Swift - 跳跃吃苹果游戏开发(SpriteKit游戏开发)

    下面通过一个样例演示如何实现飞行道具的生成,以及道具碰撞拾取. 样例说明: 1,屏幕从右到左不断地生成苹果飞过来(苹果高度随机) 2,点击屏幕可以让熊猫跳跃 3,熊猫碰到苹果,苹果消失 运行效果: 样 ...

  7. 关于Smartforms换页的

    smartforms中有系统变量SFSY-PAGE是总页码,SFSY-FORMPAGES是当前页,可以最后的窗体中做个判断 1.把窗体设置成最终窗体 2.新增一个命令,当前页等于最后一页才输出改内容, ...

  8. JSP的学习(3)——语法知识二之page指令

    本篇接上一篇<JSP的学习(2)——语法知识一>,继续来学习JSP的语法.本文主要从JSP指令中的page指令,对其各个属性进行详细的学习: JSP指令: JSP指令是为JSP引擎而设计的 ...

  9. Lazy Math Instructor

      Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3721   Accepted: 1290 Description A m ...

  10. python 在 eclipse 上的编码配置问题

    Eclipse的设置 window->preferences->general->editors->text editors->spelling->encoding ...