cocos2d-x游戏循环和日程安排
每场比赛有一个程序执行周期继续。这是导演对象来管理非常维修。在运动假设需要的场景精神,我们可以使用计时器在游戏圈(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停止。
本书交流讨论站点:http://www.cocoagame.net
《Cocos2d-x实战 C++卷》现已上线,各大商店均已开售:
京东:http://item.jd.com/11584534.html
当当: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
版权声明:本文博主原创文章。博客,未经同意不得转载。
cocos2d-x游戏循环和日程安排的更多相关文章
- cocos2d-x游戏循环与调度
每一个游戏程序都有一个循环在不断运行,它是有导演对象来管理很维护.如果需要场景中的精灵运动起来,我们可以在游戏循环中使用定时器(Scheduler)对精灵等对象的运行进行调度.因为Node类封装了Sc ...
- dhtmlxScheduler日程安排控件
dhtmlxScheduler是一个JavaScript日程安排控件 官方网站:http://www.dhtmlx.com/在线帮助文档:http://docs.dhtmlx.com/doku.php ...
- 【Visual C++】游戏编程学习笔记之三:游戏循环的使用
本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44208419 作者:Zee ...
- C#游戏开发中快速的游戏循环
C#游戏开发中快速的游戏循环的实现.参考<精通C#游戏编程>一书. using System; using System.Collections.Generic; using System ...
- Cocos2d—X游戏开发之CCToggle(菜单标签切换)CCControlSwitch(开关切换)
Cocos2d—X游戏开发之CCToggle(菜单标签切换) 首先继承子CCMenu,是菜单标签中的一种.‘ class CC_DLL CCMenuItemToggle : public CCMenu ...
- Win2D 中的游戏循环:CanvasAnimatedControl
Win2D 是 DirectX 的一个高层封装,提供了极大 DirectX 性能的同时,又具有很好用的 API 设计. 用 Win2D 除了能做出高性能的视觉效果之外,还可以轻而易举地搭建一个游戏循环 ...
- iOS cocos2d 2游戏开发实战(第3版)书评
2013是游戏爆发的一年,手游用户也是飞速暴增.虽然自己不做游戏,但也是时刻了解手机应用开发的新动向.看到CSDN的"写书评得技术图书赢下载分"活动,就申请了一本<iOS c ...
- Visio日程安排图
黄日历: 怎么创建呢? 首先找到日程安排图表 然后找到日历 这就是日历的形状模块 拖动“日”日历形状进行创建 创建好的日历通过右键单击选择"配置"来修改日期 这是周日历 与日日历不 ...
- Python:pyglet学习(3):游戏循环
在我们编游戏时,经常会用到一个无限循环,这就叫游戏循环. 先用@win.event试试 import pyglet as p win=p.window.Window(800,600) @win.eve ...
随机推荐
- NoSQL架构实践
经常有朋友遇到困惑,看到NoSQL的介绍,觉得很好,但是却不知道如何正式用到自己的项目中.很大的原因就是思维固定在MySQL中了,他们问得最多的问题就是用了NoSQL,我如何做关系查询.那么接下来,我 ...
- 【FAQ】SpingMVC实现集合參数(Could not instantiate bean class [java.util.List])
需求,要求批量新增或者改动一个List,在Spring MVC中是不支持以下代码的写法 @RequestMapping(value = "/update", method = Re ...
- U盘安装Ubuntu kylin版
初试U盘安装Ubuntu14.04 kylin版 等待Ubuntu14.04 kylin版出来后,一直想要尝试在物理机进行安装体验,恰巧碰到五一假期,因为咱是穷人,没钱出去玩,所以就有了时间实地进行 ...
- Qt Quick鼠标事件处理、键盘、计时器
在<Qt Quick 事件处理之信号与槽>中介绍了 QML 中怎样使用内建类型的信号以及怎样自己定义信号,这次我们来看看怎样处理鼠标.键盘.定时器等事件.这些时间在处理时,一般是通过信号来 ...
- 【Android】 -- 使用UncaughtExceptionHandler捕捉全局异常
在综合统计SDK(欧盟统计局的朋友,百度统计)之后.有一个非常有利的功能测试:错误分析.此功能可以在程序的执行中遇到崩溃(runtimeException)反馈给server,帮助开发者提高产品.多功 ...
- Swift - 跳跃吃苹果游戏开发(SpriteKit游戏开发)
下面通过一个样例演示如何实现飞行道具的生成,以及道具碰撞拾取. 样例说明: 1,屏幕从右到左不断地生成苹果飞过来(苹果高度随机) 2,点击屏幕可以让熊猫跳跃 3,熊猫碰到苹果,苹果消失 运行效果: 样 ...
- 关于Smartforms换页的
smartforms中有系统变量SFSY-PAGE是总页码,SFSY-FORMPAGES是当前页,可以最后的窗体中做个判断 1.把窗体设置成最终窗体 2.新增一个命令,当前页等于最后一页才输出改内容, ...
- JSP的学习(3)——语法知识二之page指令
本篇接上一篇<JSP的学习(2)——语法知识一>,继续来学习JSP的语法.本文主要从JSP指令中的page指令,对其各个属性进行详细的学习: JSP指令: JSP指令是为JSP引擎而设计的 ...
- Lazy Math Instructor
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 3721 Accepted: 1290 Description A m ...
- python 在 eclipse 上的编码配置问题
Eclipse的设置 window->preferences->general->editors->text editors->spelling->encoding ...